super和this区别
程序员文章站
2022-04-18 15:51:58
...
super
super表示引用父类,在继承的类使用,不能在其他的使用
Super出现在子类中,用来指定当前子类的父类对象
super的用法:
- Super就可以调用父类的属性
- Super就可以调用父类的方法
- Super就可以调用父类的构造函数
super在 父类的用法的特点:
- Super在子类中调用属性和方法的时候,大部分的情况和this调用的属性和方法同一个 this.getName() == super.getName();
- 当子类重写了父类的方法的时候,super.showInfo() 就是父类的方法,this.showInfo()就是子类重写父类的方法
- Super 只能调用父类允许继承的那些方法和属性
Super调用父类的构造函数
在默认的情况下,子类的构造函数会默认调用父类的无参数的构造函数
Super() 代表调用父类的无参数构造函数(Super()写不写都一样),必须出现在子类构造函数的第一句
通过super(参数值列表) 来调用父类带参数的构造函数,也必须写在子类构造函数的第一句话
this
- 当前对象的引用
- 成员变量和局部变量,可以通过this关键字来调用
- this()也需要在构造函数的第一行
- This可以调用自己的任何方法
代码
package jicheng.com;
public class Dad {
private String name;
private String job;
public Dad() {
super();
// TODO Auto-generated constructor stub
}
public Dad(String name, String job) {
super();
this.name = name;
this.job = job;
}
String hobby="三国演义";
public void attitude() {
this.name="张华";//当前对象的引用
System.out.println("认真地负责");
}
public void work() {
this.job="郑州大学";
System.out.println("他是"+this.job+"软件开发的教授");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
package jicheng.com;
public class Son extends Dad{
String job;
public void work() {
super.work();
this.job=super.getJob();//调用父类的属性
System.out.println("他在"+this.job +"读研");
}
}
package jicheng.com;
public class Daughter extends Dad {
String hobby="恋恋不忘";
public void like() {
super.attitude();//调用父类父类的方法
System.out.println("女儿喜欢"+hobby);
}
}
package jicheng.com;
public class Test {
public static void main(String[] args) {
Daughter daughter =new Daughter();
daughter.like();
Son son=new Son();
son.work();
}
}