黑马程序员技术交流社区
标题:
抽象类
[打印本页]
作者:
王红霞
时间:
2012-7-10 18:44
标题:
抽象类
毕老师的抽象类视频中我听得有点模糊……
既然子类继承父类之后 还是要在子类中复写一遍父类中的方法 为什么还要写一个抽象类??
可不可以
不写函数相同主体不同的抽象函数
而
只写函数和主体都相同的抽象函数
?在代码较少的情况下会不会更简便一些?
abstract class Student
{
abstract void study();
void sleep()
{
System.out.println("sleep");
}
}
class ChongCiStudent extends Student
{
void study()
{
System.out.println("chongci study");
}
}
class BaseCiStudent extends Student
{
void study()
{
System.out.println("base study");
}
}
class AdvStudent extends Student
{
void study()
{
System.out.println("adv study");
}
}
class AbstractDemo
{
public static void main(String[] args)
{
System.out.println("hello");
}
}
作者:
田向向
时间:
2012-7-10 19:01
比如说你说的这个学生类 这个类它是个抽象类 但是它有一些共同的属性 学习。。所以定义一个抽象类声明了它的属性。但抽象类没有行动,所以是个不完整的类 因此要被继承,继承以后写出方法体(具体行动)就可以了。而你要是不继承(没有复写父类),就还要写一些啰嗦的代码。这和后面的接口差不多了,只不过类只能单一继承,接口可以多继承。
如果父类不定义抽象类的话,比如说
void study() {
System.out.println("数学");
}
那么他的子类都得继承这个学数学,,但是每个学生学的科目可能不一样,也有的不学数学,,比如说一个体育生报道,学校里强行给他一本数学书,强行让他学数学,这可能吗?所以父类要定义抽象的学习方法,然后子类根据自己的要求去复写父类。
作者:
全海波
时间:
2012-7-10 19:28
第一个问题:在父类中定义抽象函数,完全是根据需求而定,比如说一个公司,经理,会计等,都是这个公司的员工,他们都要工作,但是他们的工作形式是不一样,会计是统计公司的财务的,而经理的工作跟会计完全不一样,这样虽为同一公司员工,但是他们的工作是不一样的,因为各自的功能不确定,所以我们就要定义一个抽象方法,让子类去实现父类的功能,记住:同一功能,他们的实现是不相同的,就要定义一个抽象方法,这比你去覆盖父类的方法更简便,同时也优化了代码。
第二个问题:不行吧,因为抽象方法是没有主体的,抽象方法所实现的功能是不确定的
作者:
曹恒业
时间:
2012-7-10 19:50
既然子类继承父类之后 还是要在子类中复写一遍父类中的方法 为什么还要写一个抽象类??
可不可以不写函数相同主体不同的抽象函数 而只写函数和主体都相同的抽象函数?在代码较少的情况下会不会更简便一些?
===============================================
所谓抽象类的作用,必定是要抽象提取出将要用到的,有相同或相似的成员变量和成员函数,这是为了提高开发效率,也是为了面向对象的思想的一致性。
1.因为父类的作用有时候是为了程序以后的扩展性考虑的,所以方法定义成抽象的,方便以后出现了新的改动后,可以快速更新,以适应新的使用需求。至于抽象类的方法子类是直接拿来使用(因为抽象类中也可能有实现的方法),还是复写之后再拿去使用,这要根据开发中的实际需求来决定,怎么方便怎么效率高,就怎么做。
2.关于第二个问题,看的不是很懂。如果不影响使用,当可以不写。其实,只要是为了提高开发效率,而且还考虑到了程序以后的扩展性,那肯定是怎么简单怎么用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2