黑马程序员技术交流社区
标题:
为什么在父类中定义抽象类?
[打印本页]
作者:
yekong262
时间:
2014-2-24 15:21
标题:
为什么在父类中定义抽象类?
本帖最后由 yekong262 于 2014-2-25 14:10 编辑
不在父类中定义抽象类功能,直接在子类中创建子类特有功能,这样不是一样么。?
作者:
ghhryr
时间:
2014-2-24 15:26
我觉得有三点:
1.在子类中来实现功能,比在父类中实现更具有扩展性 一个父类可以被多个子类继承,我们就可以定义不同的实现功能的方式,更具有灵活性
2.这个可以参照模板设计模式的思想
3.体现了java的编程思想,我自己不做,交给别人去做
作者:
菠萝鱼
时间:
2014-2-24 15:41
这个就是java的编程思想,java是面对对象编程的。这个和java多态的特性相结合,可以减少代码的耦合性。
作者:
丶小天
时间:
2014-2-24 16:30
抽象类与接口紧密相关。然接口又比抽象类更抽象,这主要体现在它们的差别上:
1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
2)抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声名必须用public来修饰没有具体实现的方法。
3)抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static fainl)。4)这一点也是最重要的一点本质的一点"抽象类是对象的抽象,然接口是一种行为规范"。
作者:
yekong262
时间:
2014-2-24 20:23
ghhryr 发表于 2014-2-24 15:26
我觉得有三点:
1.在子类中来实现功能,比在父类中实现更具有扩展性 一个父类可以被多个子类继承,我们就可 ...
我想问的是。 在子类中定义了一个show()方法,为什么还在父类中定义了一个抽象的show()方法, 这样既然是子类对象特有的功能 为什么还在父类中定义
作者:
张继鲁
时间:
2014-2-25 10:31
比如说一个公司有很多部门,那么部门所干的工作都是不一样的,让不同的员工干部同的工作:
abstract class Employee
{
public String name;
public String id;
public double pay;
Employee(String name,String id,double pay){
this.name = name;
this.id = id;
this.pay = pay;
}
public abstract void work();//因为普通员工与经理干的工作不一样,所以这里定义一个抽象类,让不同的员工干不同的工作。
}
class Pro extends Employee
{
Pro(String name,String id,double pay){
super(name,id,pay);
}
public void work(){
System.out.println("Pro Work:"+super.name+";id="+super.id+";工资:"+super.pay);
}
}
class Manager extends Employee
{
private double bonus;
Manager(String name,String id,double pay,double bonus){
super(name,id,pay);
this.bonus = bonus;
}
public void work(){
System.out.println("Manager Work");
}
}
class AbstractTest
{
public static void main(String[] args)
{
Pro p = new Pro("zhangsan","123",234.90);
p.work();
}
}
复制代码
作者:
薛旻
时间:
2014-2-25 12:18
本帖最后由 薛旻 于 2014-2-25 12:31 编辑
只从功能上来讲是一样的,没有什么区别。从面向对象的角度分析,这么做确实有他的实在意义:
1. 所谓一切皆对象,在通过对象描述世界的时候,为了更好的描述一类事物,你就得抽象出这类事物的共性的东西,也就是说,有了这些共性,你的类才有了自身的特点。继承该的类的子类,只有实现了这些方法,这种继承关系才有意义,描述也就会更贴近现实。 2. 从编码角度,这样做就更为严谨,只要子类继承了父类,那么子类就必须去实现父类抽象出的该类应该有的功能,只有实现了,该子类才具有继承的意义,换句话说就是这样可以将复杂的关系明确梳理,而且可以提高代码复用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2