黑马程序员技术交流社区

标题: 继承的关系 [打印本页]

作者: 落叶归根    时间: 2013-9-10 11:19
标题: 继承的关系
本帖最后由 落叶归根 于 2013-9-10 15:05 编辑

   假如:
class  Demo   //类1
{
int  s=1;
string  Name;
}
class  Man  extends Demo  //类2
{
System.out.println("继承Demo");
}
class Game extends Man  //类3
{
System.out.println("我可以使用Demo中的功能吗?");
}
  请问类三可以直接使用类一中的功能吗?


作者: mo﹎雲℡    时间: 2013-9-10 11:33
class Game extends Name  //类3
{
System.out.println("我可以使用Demo中的功能吗?");
}
你类三继承的Name类?
如果你修改class Game extends Man或者class Game extends Demo,你可以使用父类中(父类的父类)的公有方法(功能)。
作者: 静以修身    时间: 2013-9-10 11:48
不可以的,除非你改写下面的代码:
class Game extends Name  //类3
{
System.out.println("我可以使用Demo中的功能吗?");
}
因为你没有继承Demo这个类或者它的子类,如果你把class Game extends Name改成class Game extends Demo或者class Game extends Man就可以使用Demo中的功能。否则你继承了Name就不能再继承Demo或者它的子类,就不可以使用Demo中的功能。因为java不支持多继承
作者: 木糖醇    时间: 2013-9-10 11:51
你的类3继承name是不可行的    name只是Demo类中的一个方法    类3只能继承Demo类或者Man类
继承的那几段视频中已经说了继承需要注意的事项:必须是类与类之间有所属关系才可以继承。
注意,是类与类之间才可以
子类与父类之间是全盘继承的,不存在只继承某一个方法的情况
作者: 张晓辉    时间: 2013-9-10 13:15
不可以,name是Demo类中的一个属性,类不能继承属性,要继承类。上面代码编译都不会通过,因为你没有创建name类。关于继承方法,比方你在Demo中定义了一个构造方法Demo(){},或者定义了其他的实例方法(public void runman(){}),继承了Demo后,man就会有这些方法,你如果不想改变其功能,可以直接用的,你如果要去扩展其功能,只要重复写出方法,改变其中代码块即可,这就是所谓的覆写
作者: 杨修    时间: 2013-9-10 15:05
1,如果想在类3中使用类1的功能,必须在类3中创建类1的对象,然后才能访问类3中的东西。
2,如果楼主类的多层基层,直接可以在类3中调用类1的内容。
3,同长在一个类中的语句使需要定义在函数中(输出语句也应该定义在函数当中)。类成语只有属性(变量),函数(方法),构造函数,构造代码块,静态代码块等等。一条语句通常不能定义在类中作为成员。
总结:
      类只支持单继承,但是支持多层继承,并且对于单继承的局限性java也有自己的处理措施。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2