this
指代对象本身,通常有三种用法
1.get/set方法中
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
2.构造器中
public 类名(形参类型 形参名){
this.属性 = 形参;
}
3.this链式编程
public 类名 方法名(形参){
//方法体
return this;
}
注:this放在构造器中必须放在第一行(不能与super同时出现)
super
指代父类对象
构造器中常出现(当构造器中没有写明super()时,有默认的super())
public 类名(){
super();
//方法体
}
//与上面构造器含义相同
public 类名(){
//方法体
}
多态
父类的引用指向子类的对象
//父类
class Anmial{
public int age = 20;
public void eat(){
System.out.println("动物吃东西");
}
}
//子类
class Cat extends Anmial{
public int age = 10;
public void eat(){
System.out.println("猫吃鱼");
}
}
//测试类
public class Test{
public static void main(String[] args){
//多态创建对象(运行时多态)
Anmial cat = new Cat();
//属性输出父类的值 20
System.out.println(cat.age);
//方法输出子类的 猫吃鱼
System.out.println(cat.eat());
}
}
1.方法父类有,子类没有-->输出父类方法
2.方法父类没有,子类有-->编译报错
3.方法子类父类都有-->输出子类方法
4.属性父类有,子类没有-->输出父类属性
5.属性父类没有,子类有-->编译报错
6.属性子类父类都有-->输出父类属性