黑马程序员技术交流社区

标题: 多态 抽象求解 [打印本页]

作者: 胡焱老师    时间: 2014-1-15 23:18
标题: 多态 抽象求解
猫是具体的事务
动物是抽象的类

猫 x=new 猫();
动物 x=new 猫();

动物是抽象的   怎么可以创建对象呢???新手 不懂  求解!!!!

作者: 黄晓鑫    时间: 2014-1-15 23:22
动物的类型是抽象的 而动物的对象不是抽象的 动物的类型是抽象的 而动物的类型不是抽象的 只是把动物对象赋给动物类型
作者: 松涛小玮    时间: 2014-1-15 23:25
动物是个类是抽象的,后面跟的x是动物类型的对象,即叫x的具体动物
作者: xu6148152    时间: 2014-1-15 23:28
多态。你说猫是动物吗?
作者: 放课后小朋友    时间: 2014-1-15 23:32
abstract class Animal{
        void cry(){}
}
class Cat extends Animal{
        void cry(){
                System.out.println("miao...");
        }
}
public class JiShuFen3 {
        public static void main(String[] args) {
                Animal a=new Cat();
                a.cry();
        }
}
抽象类不能创建对象,是因为抽象类中方法没有实现,调用无意义,子类通过继承抽象类可以实现抽象类中方法,父类可以创建子类对象。
作者: 赵珏    时间: 2014-1-15 23:33
这只是在语法上把x当作动物来看, 而实际上x是个猫. 干的都是猫干的事情.

就是说等号左边的意思只是在栈内存中建立一个动物类型的局部变量, 猫的对象是用猫这个类下面的构造函数创建的. 然后把对象的地址值传给x. 所以跟动物实际上有没有构造函数没关系.
作者: 银酱    时间: 2014-1-15 23:37
其实猫也是抽象的,
动物和猫都是抽象的,定义出来的对象是实体。
比如
猫 cat1=new 猫();
cat1才是实体对象。
作者: 月生春    时间: 2014-1-15 23:42
我们只有真正理解了多态的的含义就很明白为什么 可以是  动物 X =new 猫();
多态:即事物的多种体现形态, 我们既然实例化了一只猫,那么我们可以叫其为一只猫,也可以说是一只动物,
动物虽然是抽象的,但是可正是抽象的事物才能描述具体的事物
new 猫(); 是一个实体.具备事物的多种体现形态.    抽象只是一个对象的描述,跟创建对象没多大关系!
作者: 胡焱老师    时间: 2014-1-16 21:08
放课后小朋友 发表于 2014-1-15 23:32
abstract class Animal{
        void cry(){}
}

有点懂了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2