码迷,mamicode.com
首页 > 其他好文 > 详细

继承--方法覆盖--多态

时间:2019-12-15 01:22:07      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:extends   err   string   cas   地址   ide   两种   sys   方法覆盖   

继承extends 

java只支持单继承,但是可以间接继承别的类,默认继承Object

继承的作用:代码重用,重要的作用是:方法的覆盖override和多态机制。

多态的前提是继承 向上转型:等号右边是子类 左边是父类 向下转型:等号右边是父类 左边是子类

向上转型:父类引用指向了(等号左边)子类的内存地址

向下转型:强制类型转换所以需要加强制类型转换符

向下转型存在ClassCastException类转换异常,所以需要加instanceof 判断一下类型:

Animal a3=new Bird();
if(a3 instanceof Cat){
Cat c1=(Cat)a3;
c1.catchMouse();
}else if(a3 instanceof Bird){
Bird b1=(Bird)a3;
b1.fly();
}

 

package test;

public class Test {
public static void main(String[] args) {
Animal a=new Animal();
a.move();
Cat c=new Cat();
c.move();

/**
* Animal这个是父类
* Cat这个是子类
* 子类向父类转成为自动转换类型向上转
* 在编译期a1是Animal类型
* 在运行期a1是引用指向了Cat
* 编译器和运行期是两种状态所以称为多态
*/

Animal a1=new Cat();
a1.move();
// a1.catchMouse();

Cat c1=(Cat)a1;
c1.catchMouse();
Dog d=new Dog();
d.move();
}
}

 

package test;

public class Animal {
public void move(){
System.out.println("动物在移动");
}
}

 

package test;

public class Dog extends Animal{
public void move(){
System.out.println("小狗在小跑");
}

}

 

package test;

public class Cat extends Animal {
public void move(){
System.out.println("小猫在走猫步");
}
public void catchMouse(){
System.out.println("猫抓老鼠");
}

}

继承--方法覆盖--多态

标签:extends   err   string   cas   地址   ide   两种   sys   方法覆盖   

原文地址:https://www.cnblogs.com/god1/p/12041559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!