LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 895|回复: 8

关于抽象类的疑问

[复制链接]
发表于 2005-1-9 02:07:20 | 显示全部楼层 |阅读模式
各位大哥小弟看书一直不能理解抽象类 abstract的含义

不知道他到底有何用?
用在那里~~~

多谢
小弟刚学,还请大家指点
发表于 2005-1-9 02:32:51 | 显示全部楼层
抽象类 在我的理解中是为了解决代码重用问题的
 楼主| 发表于 2005-1-9 02:45:57 | 显示全部楼层
噢  我还有一个不明白的地方
就是一个类被定义成为了抽象类,就不建立这个类的对象了

但是下面的代码就搞的我很晕:
后面部分persom被定义为抽象类,但是为什么下面的代码还可以使用
Person[] people = new Person[2];
定义Person的对象那?

public class PersonTest
{  
   public static void main(String[] args)
   {  
      Person[] people = new Person[2];

      // fill the people array with Student and Employee objects
      people[0] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
      people[1] = new Student("Maria Morris", "computer science");

      // print out names and descriptions of all Person objects
      for (int p = 0; p<people.length;p++)
         System.out.println(p.getName() + ", " + p.getDescription());
   }
 楼主| 发表于 2005-1-9 02:47:49 | 显示全部楼层
Post by bmsdr
抽象类 在我的理解中是为了解决代码重用问题的


小弟比较笨,还是不能很好的理解大哥的意识
能用代码来讲解下马 ?

有劳大哥了
发表于 2005-1-9 10:51:33 | 显示全部楼层
抽象类和接口主要是解决规范问题,在多人开发时比较重要。。。
发表于 2005-1-9 12:32:49 | 显示全部楼层
Post by bmsdr
但是下面的代码就搞的我很晕:
后面部分persom被定义为抽象类,但是为什么下面的代码还可以使用
Person[] people = new Person[2];
定义Person的对象那?

Person[] people = new Person[2]只是定义了两个reference而不是两个对象
发表于 2005-1-10 20:30:24 | 显示全部楼层
抽象类的概念应该是对应于现实世界中的抽象事物(其实,面向对象程序设计的一个核心思想就是使程序设计的模型域与问题域更加接近)

现实世界中,抽象事物很多呀,就那用的很“滥”的一个例子就是"交通工具",它的子类可是有“汽车”,还有“飞机”。。。“汽车”,“飞机”这样的类都可以实例化,也就是说我设计好“汽车”这个类,那么就可以创建它的对象,很正常呀,马路上天天跑着!:)

不过,你能把“交通工具”这个类实例化吗? 现实世界中根本没有这样的东西呀!

如果从程序设计的角度看,OO中出现抽象类,是为了代码重用!
另外,抽象类会使得我们的程序可扩展型变得很好。。。。。

其实,抽象类带来的好处远不止这些。。。更深层次的,需要你和我一起慢慢体会吧! :)
发表于 2005-1-12 15:19:28 | 显示全部楼层
抽象类的一个很大的好处,多态性你们好像忽略了。
 楼主| 发表于 2005-1-13 00:52:22 | 显示全部楼层
多谢~~~指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表