0
点赞
收藏
分享

微信扫一扫

Java中的super

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 super访问父类的属性

在子类的方法或构造器中,通过使用 super.属性 来访问父类属性 应用场景: 当子类和父类中定义了同名的属性时,想要调用父类中声明的属性,需要通过 super.属性 的方式来表明调用的是父类中声明的属性。

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

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

3 super访问父类的方法

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

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

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

4 super和this的区别

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

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

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


super

this

代表对象

代表父类对象的引用

当前对象本身

前置

只有在继承条件下才能使用

没有继承也可以使用

构造方法

父类构造

本类构造

举报

相关推荐

0 条评论