黑马程序员技术交流社区
标题:
抽象类的子类问题
[打印本页]
作者:
daoyua
时间:
2014-1-9 10:21
标题:
抽象类的子类问题
一个抽象类的子类中,可以只实现父类父类的一个方法而建立对象么
作者:
也,许。
时间:
2014-1-9 11:30
不可以的吧,如果子类只覆盖了父类中的部分抽象方法,那么这个子类还是一个抽象类,不能够创建对象调用方法。如果想使用抽象类中的方法,就必须由子类复写其所有的抽象方法以后,建立子类对象来调用。
作者:
花生壳
时间:
2014-1-9 12:49
这个不可以,子类继承父类(抽象类),
必须复写父类中所有抽象方法
。才可以new 对象
抽象类中可有抽象和非抽象方法!
但是类里面有抽象方法的类必须是抽象类
接口必须要实现里面的所有方法!
作者:
渐渐不懂了
时间:
2014-1-9 13:53
不可以,抽象类不可建立对象
作者:
LuckyQS
时间:
2014-1-9 14:02
抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
作者:
路西法
时间:
2014-1-9 15:57
老毕归纳的抽象类特点第四条:只有通过子类继承抽象类并
覆盖抽象类中的所有抽象方法后,该子类才可以实例化
。否则,该子类还是一个抽象类。
由此可见 你说的情况是不可以的。
作者:
daoyua
时间:
2014-1-10 16:32
我的意思不是你们说的那个,距离父类有2个抽象方法method1,和method2,第一个子类AZ只实现method1,A虽然还是抽象类,但是A的子类可以只实现method1啊,method2就不用管啦
作者:
贺利英
时间:
2014-1-10 20:03
那是不可以的,因为父类有两个抽象的方法,它的子类A的子类(假设为)B依然是父类的子类,所以,如果B只是实现了父类中的一个抽象方法method1,而没有实现方法method2,那么此子类B依然是抽象的,所以此子类B也是没办法建立对象的。下面是程序以及结果,你也可以自己验证一下。
作者:
贺利英
时间:
2014-1-10 20:11
abstract class Person
{
abstract void show();
abstract void method();
}
abstract class A extends Person
{
public void show() //此类中只是实现了抽象父类中的一个方法
{ //所以此子类依然是抽象的。
System.out.println("java");
}
}
class B extends A //此子类B继承了A。
{
public void show()
{
System.out.println("java////");
}
}
class AbstractDemo
{
public static void main(String[] args)
{
B b=new B();
b.show();
//System.out.println("Hello World!");
}
}
结果你验证一下吧,我这边出了点问题,截图不成的,不好意思啊!!!!
作者:
daoyua
时间:
2014-1-10 20:46
嘿嘿,可以哦,我给你发代码
作者:
daoyua
时间:
2014-1-10 20:47
abstract class Person
{
abstract void show();
abstract void method();
}
abstract class A extends Person
{
public void show() //此类中只是实现了抽象父类中的一个方法
{ //所以此子类依然是抽象的。
System.out.println("java");
}
}
class B extends A //此子类B继承了A。
{
public void method()
{
System.out.println("java////");
}
}
class Demo
{
public static void main(String[] args)
{
B b=new B();
b.method();
//System.out.println("Hello World!");
}
}
作者:
贺利英
时间:
2014-1-10 21:39
可以什么?你的能编译成功吗?
作者:
DOOR
时间:
2014-1-10 22:26
可以,如果父类只有一个抽象方法的话,子类复写掉父类仅有的一个抽象方法,子类就变不抽象了,不抽象就可以new对象了。
作者:
daoyua
时间:
2014-1-10 23:29
当然行,你看我写的代码,我改了下的
作者:
贺利英
时间:
2014-1-11 12:16
嗯我看到了 嗯我验证了一下 可以的 以前没有注意到这个问题 谢谢你啊 自己又掌握了一个知识点 嘿嘿嘿
作者:
姜胜凯
时间:
2014-1-11 19:11
如果你的父类是只有一个抽象方法,那么可以。要不你必须覆盖父类的所有抽象方法才可以创建对象~
作者:
tf996268809
时间:
2014-1-11 21:31
若是父类只有一个抽象方法,可以只重写这一个方法建立子类对象,若是有多个抽象方法,必须都重写后才能建立对象,否则子类也变成了抽象类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2