A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡焱老师 中级黑马   /  2014-1-15 23:18  /  1202 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

猫是具体的事务
动物是抽象的类

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

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

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

8 个回复

正序浏览
放课后小朋友 发表于 2014-1-15 23:32
abstract class Animal{
        void cry(){}
}

有点懂了
回复 使用道具 举报
我们只有真正理解了多态的的含义就很明白为什么 可以是  动物 X =new 猫();
多态:即事物的多种体现形态, 我们既然实例化了一只猫,那么我们可以叫其为一只猫,也可以说是一只动物,
动物虽然是抽象的,但是可正是抽象的事物才能描述具体的事物
new 猫(); 是一个实体.具备事物的多种体现形态.    抽象只是一个对象的描述,跟创建对象没多大关系!

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
银酱 中级黑马 2014-1-15 23:37:38
7#
其实猫也是抽象的,
动物和猫都是抽象的,定义出来的对象是实体。
比如
猫 cat1=new 猫();
cat1才是实体对象。
回复 使用道具 举报
这只是在语法上把x当作动物来看, 而实际上x是个猫. 干的都是猫干的事情.

就是说等号左边的意思只是在栈内存中建立一个动物类型的局部变量, 猫的对象是用猫这个类下面的构造函数创建的. 然后把对象的地址值传给x. 所以跟动物实际上有没有构造函数没关系.

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
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();
        }
}
抽象类不能创建对象,是因为抽象类中方法没有实现,调用无意义,子类通过继承抽象类可以实现抽象类中方法,父类可以创建子类对象。

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

回复 使用道具 举报
多态。你说猫是动物吗?
回复 使用道具 举报
动物是个类是抽象的,后面跟的x是动物类型的对象,即叫x的具体动物
回复 使用道具 举报
动物的类型是抽象的 而动物的对象不是抽象的 动物的类型是抽象的 而动物的类型不是抽象的 只是把动物对象赋给动物类型

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马