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访问控制符修饰,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在同一个包中。

 

posted @   xjw12345  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示