super关键字,super关键字和this关键字的区别

super关键字:
使用super可以调用父类的成分:父类的成员变量、父类的方法、父类的构造方法。

注意:使用super关键字和this关键字,均不能用在静态方法中,只能用在普通方法(实例方法)中。

访问属性:
示例:

父类
  public class FatherClass{
      public int age=18;
    }

子类

public class ChildClass extends FatherClass{
      public int age = 10;
 
      public void test1(){
        System.out.println(this.age);//这里将输出 10,访问的是自己(本类)的属性
      }
      public void test2(){
        System.out.println(super.age);//这里将输出 18,访问的是父类的属性
      }
      public void test3(){
      System.out.println(age);//这里将输出 10;默认情况,如果父类存在age属性,子类也存在age属性,直接访问age将是以 this.age 形势访问。但如果本类不存在age属性,则将以 super.age 的形势访问。
      }
      
    }


访问方法:
示例:

父类

  public class FatherClass{
      public void show(){
        System.out.println("Father类方法");
      }
    }

子类
  
public class ChildClass extends FatherClass{
      public void show(){
        System.out.println("Child类方法");
      }
      
      public void test1(){
        this.show();//这里将输出:Child类方法
      }
      public void test2(){
        super.show();//这里将输出:Father类方法
      }
      public void test3(){
      	show();//这里将输出:Child类方法;
        
      //默认情况,如果父类存在show()方法,子类也存在show()方法,直接访问show()方法将是以 this.show() 形势访问。但如果本类不存在show()方法,则将以 super.show() 的形势访问。
      }
      
    }

this和super的区别:
super 是使用在继承关系中,主要是用于子类调用父类的构造方法和普通方法
构造方法调用方式:super(参数列表);
普通方法调用方式:super.方法名称

this 只能在本类中使用 this(参数列表)或者this()


super关键字,super关键字和this关键字的区别_第1张图片


你可能感兴趣的:(javaSE)