首页后端开发JAVAJava中的 this 和 super

Java中的 this 和 super

时间2023-11-27 16:19:02发布访客分类JAVA浏览1516
导读:1 this 关键字1.1 this 访问本类属性this 代表对当前对象的一个引用所谓当前对象,指的是调用当前类中方法或属性的那个对象this只能在方法内部使用,表示对“调用方法的那个对象”的引用this.属性名,表示本对象自己的属性当对...

1 this 关键字

1.1 this 访问本类属性

this 代表对当前对象的一个引用

  • 所谓当前对象,指的是调用当前类中方法或属性的那个对象
  • this只能在方法内部使用,表示对“调用方法的那个对象”的引用
  • this.属性名,表示本对象自己的属性

当对象的属性和方法或构造器中,名称相同时,用 this 以示区分。

public class Person{
    
    String name;

    public Person(String name){
    
        //用以区分对象中的属性名,参数名
        this.name = name;

    }

}

1.2 this 调用方法

this关键字调用类的重载构造函数

this关键字必须位于构造函数的第一行

public class Person{
    
    String name;
    
    int age;

    public Person(int age){
    
        this.age = age;

    }

    public Person(String name){
    
        this(1);
    
        this.name = name;

    }

}

this.方法名:表示当前对象自己的方法

public class Student{

    public void eat(){
    
        System.out.println("吃饭");

    }

    public void talk(){
    
        this.eat();
    
        System.out.println("吃完饭再说话");

    }

}

1.3 this 关键字使用注意

this 不能用于静态方法和静态块

main 方法也是静态的,所以 this 也不能用于 main 方法

2 super 关键字

2.1 super 访问构造函数

在继承中,子类的构造函数必须依赖父类提供的构造函数

super(参数列表) 访问父类的构造函数

super 调用父类的构造函数,必须在子类构造函数的第一行

//父类
public class Person{

    public Person(){
}

}

//子类
public class Student extends Person{

    public Student(){
    
        super();

    }

}

在继承中,子类的构造函数必须依赖父类提供的构造函数

//父类中只有带参构造方法
public class Base {
    
  String name;
    
  int age;

  
  public Base(String name, int age){
  
  }

}
//子类构造方法必须依赖父类
public class Son extends Base{

  public Son(){
    
    //如果父类提供的只有带参构造方法,子类的构造方法必须依赖父类提供的现有构造方法;
    //使用super(参数列表)去访问父类提供的构造函数,且必须明确写出参数;
    //super必须在第一行
    super("张三", 20);

  }

}

2.2 super访问父类的属性

在子类的方法或构造器中,通过使用 super.属性 来访问父类属性

应用场景:

当子类和父类中定义了同名的属性时,想要调用父类中声明的属性,需要通过 super.属性 的方式来表明调用的是父类中声明的属性。

public class Car{
    
  //车架号
  int id;

}


class Benz extends Car{
    
  //内部车辆编号
  int id;
 
  public void showInfo(){
    
    System.out.println("车架号是:" + super.id + " 内部车辆编号:" + id);

  }

}

2.3 super 访问父类的方法

在子类的方法或构造器中,通过使用 super.方法名 来调用父类的方法

public class Car{

  public void drive(){
    
    System.out.println("驾驶");

  }

}


class Benz extends Car{

  public Benz(){
    
    //访问父类方法
    super.drive();

  }

}
    

3 super 和 this 的区别

super() 是调用父类的构造函数,必须在构造函数的第一行

this() 是调用本类的构造函数,必须在构造函数的第一行

super() 和 this() 在同一个构造方法中,不能同时出现

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Java中的 this 和 super
本文地址: https://pptw.com/jishu/557782.html
Java中解析XML文件 Java多线程08——生产者/消费者模式

游客 回复需填写必要信息