public class Demo_test {
/*
* 多态规则
* 1 多态是方法的多态,属性没有多态
* 2父类和子类有联系,注意类型转换ClassCastExeception
* 3 存在条件:继承关系,方法需要重写,父类引用指向子类对象
* */
/*
* static静态方法不能被重写,属于类方法, static修饰的方法和类一起加载, 非static和对象一起加载
* final 常量修饰
* pribave私有方法,无法重写
* */
public static void main(String[] args) {
tear std_tear = new std();//父类引用指向子类,正常只能调用父类方法,调用子类需要向下转型
std std = new std();//子类自己对象
tear tear = new tear();//父类自己对象
tear.phoen();//父类调用自己phone的方法
std.book();//子类调用父类的phone方法
std.phoen();//子类调用自己的phone(重写父类phone)
std_tear.write();//父类引用调用父类独有方法
std_tear.phoen();//父类类调用子类phone(已经重写父类phone)
((std) std).book(); //父类引用调用子类,强制向下转型调用子类方法
}
}
class std extends tear{
int a = 0;
public void book(){//调用父类方法
super.phoen();
}
@Override//重新父类方法
public void phoen() {
System.out.println("son phone");
}
}
class tear{
int b =1;
public void phoen(){
System.out.println("father phone");
}
public void write(){
System.out.println("father write");
}
}