您的位置:首页 > 编程语言 > Java开发

Java 基础

2016-07-01 18:17 309 查看
/*

1多态的体现
父类的引用也可以接受自己的子类
2多态的前提
必须是类与类之间有联系,要么是继承要么是实现。
通常要覆盖
3多态的好处
很好的提高代码的扩展性
4多态的应用

5多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员。

6.多态的
*/

abstract class Animal
{
int num=9;
abstract void eat();
}

class Cat extends Animal
{
int num=112;
public void eat()
{
System.out.println("eat fish");
}
public void catchfish()
{
System.out.println("catch fish");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("eat Bone");
}
public void lookHome()
{
System.out.println("look home");
}
}
class Pig extends Animal
{
public void eat()
{
System.out.println("eat food");
}
public void sleep()
{
System.out.println("can sleep");
}
}
class Duotaidemo
{
public static void main(String[] args)
{
//Cat c=new Cat();
//c.eat();

function(new Dog());
function(new Cat());

Animal a=new Cat();
a.eat();
/*
在多态中非静态成员函数的特点:
在编译时期:参阅引用型变量(a)所属的类中是否有调用的方法,如果有,则编译通过,否则失败
在运行时期:参阅对象所属的类中调用的方法(new Cat())

简单总结:编译看左边,运行看右边。

注意:1.。在多态中成员变量的特点:
无论编译和运行,都参考左边(引用类型所属的类)

2.。在多态中static成员函数的特点:
无论编译和运行。都参考左边(引用类型所属的类)

*/

}

public static void function(Animal a)
{
a.eat();
if(a instanceof Cat)
{
Cat c=(Cat)a;
c.catchfish();
}
else if(a instanceof Dog)
{
Dog d=(Dog)a;
d.lookHome();
}
else
{
Pig p=(Pig)a;
p.sleep();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java