class Dog extends Animal
{
public void eat()
{
System.out.println("骨头");
}
public void lookHome()
{
System.out.println("看家");
}
}
class Demo2
{
public static void main(String[] args)
{
Animal a = new Dog();//多态向上转型:其实是可以对子类对象的功能进行限定,仅使用父类型的基本功能即可。
method(a);//当定义了很多狗,需要统一给狗吃饭,这时就可以定义一个方法,提高代码的复用性。可以对具体事物的共性类型进行统一操作,将复杂问题简单化。
}
public static void method(Animal a)
{
a.eat();
}
}
作者: 夏天 时间: 2012-8-29 00:06
楼上正解,新人混脸熟。
作者: 程有愿 时间: 2012-8-29 08:38
多态:可以理解为事物存在的多种体现形态
1:多态的体现,父类的引用指向自己的子类对象,父类的引用也可以接受自己的子类对象
2:多态的好处,大大提高了程序的扩展性
3:多态的前提,必须是类与类之间有关系,要么继承要么实现。通常还有一个前提,存在覆盖:
4:多态的弊端,提高了扩展性,但是只能使用父类的引用访问父类的成员。
5:多太的应用;在编译时期:参阅引用型变量所属的类中是否有调用方法,如果有,编译通过,如果没
有编译失败。在运行时期:参阅对象所属的类中是否有调用方法。简单总结就是成员函数在多态调用时
编译看左边,运行看右边(非静态函数);对于静态函数来讲,
在多态中成员变量的特点,无论编译和运行都参考左边,引用型变量所属的类。
在多态中静态成员函数的特点,无论编译和运行都参考左边。
abstract class Student()
{
abstract void study();
void sleep(){
System.out.println("躺着睡觉");
}
}
class BaseStudent extends Student
{
public void study()
{
System.out.println("base...... study");
}
public void shixi()
{
System.out.println("基础班学生在实习.....");
}
}
class DuoTaiTest
{
public static void main(String[] args){
Student s=new BaseStudent();
s.study();
BaseStudentbs=(BaseStudent)s;
bs.shixi();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |