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