
1.概念

2.格式

3.前提

4.多态与继承


5.多态的优缺点

6.转型

7.instanceof

8.代码实现
package JavaBasicReview;
public class JavaGrammer {
public static void main(String[] args) {
//多态,父类引用指向子类对象(向上转型)
Fu fu = new Zi();
fu.methodFu();//可以访问父类中特有的方法
fu.methodOne();//可以访问父类中被子类重写的方法
System.out.println(fu.age);//可以访问父类的成员变量
//System.out.println((fu.name);//无法访问子类成员变量
System.out.println(((Zi) fu).name);//如果想访问子类成员变量,必须向下转型
//fu.methodZi();//无法访问子类特有的方法
((Zi) fu).methodZi();//如果想访问子类特有方法,必须向下转型
System.out.println(fu instanceof Zi);
System.out.println(fu instanceof Fu);
System.out.println("========继承============");
Zi zi = new Zi();
zi.methodFu();//可以访问父类特有的方法
zi.methodOne();//可以访问父类中被子类重写的方法
System.out.println(zi.age);
System.out.println(zi instanceof Zi);
System.out.println(zi instanceof Fu);
System.out.println("====多态的应用========");
//多态的应用,前期定义父类,后期使用子类,提高了代码的扩展性
methodOne(new Zi());
methodOne(new ZiOne());
}
public static void methodOne(Fu obj){
obj.methodOne();
}
}
class Fu {
int age = 99;
void methodFu(){
System.out.println("Fu类中特有的方法");
}
void methodOne(){
System.out.println("Fu类中被重写的方法");
}
}
class Zi extends Fu {
int age = 88;
String name = "zi";
void methodZi(){
System.out.println("Zi类中特有的方法");
}
@Override
void methodOne() {
/*super.methodOne();*/
System.out.println("被子类重写的方法,Zi类重写");
}
}
class ZiOne extends Fu{
@Override
void methodOne() {
/*super.methodOne();*/
System.out.println("被子类重写的方法,ZiOne类重写");
}
}