java基础学习复习之路(八)---多态

多态

多态是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是什么对象的时候,又或者他可能是一个经过处理返回的对象类型时
//同时他们继承同一个父类,拥有相同的方法,所以需要判断鉴别类是实现大哥子类对象

猜你喜欢

转载自blog.csdn.net/weixin_43157543/article/details/106005755