super关键字和访问权限修饰符
super关键字
super关键字用来访问父类的属性和方法
public class Person { int num = 5; }
public class Student extends Person{ public void study(){ System.out.println("num="+super.num); } }
public static void main(String[] args) { Student student = new Student(); student.study(); }
运行结果:
如果我们在父类中添加无参构造器,那么在子类中或默认调用父类中的构造器,并且父类构造器回先执行
public Student() {
super(); //默认添加
System.out.println("子类构造器");
}
public Person() { System.out.println("父类构造器"); }
public static void main(String[] args) { Student student = new Student(); student.study(); }
运行结果:
super关键字可以理解为父类对象,this关键字表示当前对象
当一个属性的使用没有添加this 或者super关键字,那么他的查找顺序是局部变量-->成员变量-->父类变量如果还没有找到那么就会包编译异常。
被this修饰的变量,如果本类的成员变量中没有找到,同样也会去父类中查找
被super修饰的变量只会从父类中查找,如果父类中没有,而子类中存在,同样会报编译错误
任何一个构造方法都默认的会在构造方法的第一句上写上super()来访问父类的无参构造方法,目的是初始化父类变量
super和this方法构造方法都必须出现在构造方法的第一句,this和super在方法构造方法的时候,二者不能共存
访问权限修饰符
作用:表示被修饰的元素的访问权限
访问权限修饰符有四个: public protected [default] private
访问权限修饰符可以修饰的元素:
1.类只有public、abstract和final能够修饰,或者不加【private和protected可以修饰内部类】
2.成员变量
3.成员方法
private(当前类访问级别):如果类的成员被private来修饰,那么这个成员只能被该类的其他成员访问,其他类无法直接访问
default(包访问级别):如果一个类或者类的成员不使用任何访问控制符修饰,则称它为默认访问控制级别,这个类或者类的成员只能被本包中的其他类访问。
protected(子类访问级别):如果一个类的成员被protected访问控制符修饰,那么这个成员既能被同一包下的其他类访问,也能被不同包下该类的子类访问。
public(公共访问级别):这是一个最宽松的访问控制级别,如果一个类或者类的成员被public访问控制符修饰,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在同一个包中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix