黑马程序员技术交流社区

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

作者: 葬天    时间: 2012-10-6 17:07
标题: 关于继承的问题
本帖最后由 葬天 于 2012-10-7 14:25 编辑

大家都知道,java的类继承是单继承,而且每个类都默认继承Object类,那么我定义有子父关系的两个类,子类继承父类,那岂不是说子类继承了Object和父类两个类,不就是多继承了吗,
这个问题何解?
作者: 黄小贝    时间: 2012-10-6 17:22
只有一个父类,父类的父类不管我的事~~

public class Test {

        /**
         * @param args
         */
        @SuppressWarnings("unchecked")
        public static void main(String[] args) {
               
               
                Class class1 = A.class;
                Class class2 = B.class;
               
                System.out.println(class1.getSuperclass());
                System.out.println(class2.getSuperclass());
        }

}


作者: 葬天    时间: 2012-10-6 17:27
黄小贝 发表于 2012-10-6 17:22
只有一个父类,父类的父类不管我的事~~

public class Test {

你的代码不是很懂,
我想表达的时子类默认继承了Object,自己又手动继承了他的父类,这样不是一个类继承了两个类了吗?
作者: 乔九    时间: 2012-10-6 17:35
所有的类都隐式的继承自Object是说如果你没有显式地给类指定父类时,编译器会给类加一个父类Object,如果你给它指定了父类,编译器就不会多此一举了


作者: 黄小贝    时间: 2012-10-6 17:40
葬天 发表于 2012-10-6 17:27
你的代码不是很懂,
我想表达的时子类默认继承了Object,自己又手动继承了他的父类,这样不是一个类继承 ...

额,我的错~

我的意思是~

A类没有显示继承任何类的时候,他的父类是Object,但是如果有显示的父类B的时候,他的父类是B,但是由于继承的传递性,因为B继承Object,A也可以看成Object的子类,但是A的父类只有一个就是B

下面这个实验验证了这一点

public class B extends A{

}

public class A {

}

public class Test {

        /**
         * @param args
         */
        @SuppressWarnings("unchecked")
        public static void main(String[] args) {
               
               
                Class class1 = A.class;
                Class class2 = B.class;
               
                System.out.println(class1.getSuperclass());
                System.out.println(class2.getSuperclass());
        }

}





作者: 葬天    时间: 2012-10-6 17:43
黄小贝 发表于 2012-10-6 17:40
额,我的错~

我的意思是~

明白了 3Q
作者: 葬天    时间: 2012-10-6 17:44
问题已解决
作者: 李志群    时间: 2012-10-6 21:55

继承的特点:
           1,java中只能单继承,多继承的机制被java语言改良了。
           单继承:一个类只能有一个父类。一个儿子只能有一个父亲。
           多继承:一个类可以有多个父类。一个儿子有多个父亲。

java不直接支持多继承的原因:会产生调用的不确定性,
java支持多层继承。
继承的特点:
           1,java中只能单继承,多继承的机制被java语言改良了。
           单继承:一个类只能有一个父类。一个儿子只能有一个父亲。
           多继承:一个类可以有多个父类。一个儿子有多个父亲。

java不直接支持多继承的原因:会产生调用的不确定性,
java支持多层继承。

希望楼主采纳!
作者: 黑马连家华    时间: 2012-10-6 22:51
关于java中的多继承
这是java相对于其它语言的改进
当有两个类A,B里面有相同的方法时,我用一个子类C来同时继承A和B
当C复写A和B类中的同名方法时,jvm不会知道你到底要复写哪个方法,产生了混淆
而B继承A,C继承B时不会发生这种事,所以这种继承是允许的.
作者: 唐增友    时间: 2012-10-7 20:59
java中的单继承是指一个类只能有一个直接父类
如果你A类继承自B,A就不extends Object了,但是你的B是extends Object的,
所以A也继承自Object,是一个间接父类




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