【Java学习-J.160601.0.10】关于父类引用指向子类对象

今天,在复习时遇到一些的代码[Animal(父类) Dog(子类)]:

<span style="font-size:18px;">Animal dog=new Dog();</span>

这是什么?

这种用法叫做“父类引用指向子类对象”,是指定义一个父类的引用,指向子类的创建的对象。功能上相当于子类的“向上转型”。

<span style="font-size:18px;">Animal A=new Animal();
Dog dog=new Dog();
A=dog;</span>
就是将子类的对象赋给父类的引用。new Dog()是实例化一个没有名称的对象,然后转型给父类A。


用来做什么的?

一般来说,一个对象创建实例后就定死了,比如dog,如果程序的变量写dog的话,万一以后发生变化就要改代码了,那么就不要写死dog,而是写父类Animal,那么以后用到Animal的地方,就用dog实例,cat实例取代,不用改实例名了。体现了面向对象的“多态”。

<span style="font-size:18px;">public class caseDemo {
	public static void main(String[] args) {
		Animal a=new Animal();
		Animal d=new Dog();//父类引用(Animal)指向子类对象
		Animal c=new Cat();
		a.showlegs();
		d.showlegs();
		c.showlegs();	
	}
}

class Animal{
	String type="动物";
	public void showlegs(){
		System.out.println(type+":吃荤素");
	}
}
class Dog extends Animal{
	String type="狗";
	public void showlegs(){
		System.out.println(type+":吃骨头");
	}
}
class Cat extends Animal{
	String type="猫";
	public void showlegs(){
		System.out.println(type+":吃鱼");
	}</span>
} 

运行结果是:

动物:吃荤素
狗:吃骨头
猫:吃鱼




阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jtcao/article/details/51559610
个人分类: Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭