多态
多态是java的一种特性。
那多态的直接写法写法是什么呢?
父类指向子类
public class Fu{
int a = 10;
public void methodA(){};
};
public class Zi extends Fu{
int a = 20;
public void method(){};
public void methodA(){};
};
//多态的一种体现
Fu obj = new Zi();
几个注意:
1. 访问成员变量是,看等号左边是谁则用谁,没有则向上找
上例:输出obj.a ,结果为10
2. 访问方法则看实现对象是谁用谁,没有则向上找
3. 编译看左边(父类),运行看右边(子类)
例:直接obj.method() 会报错,则不能进行编译运行
因为编译的时候要看左边及父类有没有该方法
当然上面的例子可以强制声明为成子类 ((Zi) obj).method();
obj,methodA();则不会有问题,运行的时候要看右边,所以运行的时候运行子类方法
instanceof
判断一个对象能不能当作后面一个类的对象
也就是用来识别对象
例:
//动物父类
public class Animal(){}
//对象猫
public class Cat extends Animal(){}
//对象狗
public class Dog extends Animal(){}
//instanceof使用
Animal animal = new cat();
if(animal instanceof Cat){
//执行cat
}
if(animal instanceof Dog){
//执行Dog
}
//它一般是用来:当不知道animal是什么对象的时候,又或者他可能是一个经过处理返回的对象类型时
//同时他们继承同一个父类,拥有相同的方法,所以需要判断鉴别类是实现大哥子类对象