A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 葬天 中级黑马   /  2012-10-6 17:07  /  1942 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 葬天 于 2012-10-7 14:25 编辑

大家都知道,java的类继承是单继承,而且每个类都默认继承Object类,那么我定义有子父关系的两个类,子类继承父类,那岂不是说子类继承了Object和父类两个类,不就是多继承了吗,
这个问题何解?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
只有一个父类,父类的父类不管我的事~~

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());
        }

}

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
黄小贝 发表于 2012-10-6 17:22
只有一个父类,父类的父类不管我的事~~

public class Test {

你的代码不是很懂,
我想表达的时子类默认继承了Object,自己又手动继承了他的父类,这样不是一个类继承了两个类了吗?
回复 使用道具 举报
所有的类都隐式的继承自Object是说如果你没有显式地给类指定父类时,编译器会给类加一个父类Object,如果你给它指定了父类,编译器就不会多此一举了

回复 使用道具 举报
葬天 发表于 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:40
额,我的错~

我的意思是~

明白了 3Q
回复 使用道具 举报
葬天 中级黑马 2012-10-6 17:44:14
7#
问题已解决
回复 使用道具 举报

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

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

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

希望楼主采纳!

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
关于java中的多继承
这是java相对于其它语言的改进
当有两个类A,B里面有相同的方法时,我用一个子类C来同时继承A和B
当C复写A和B类中的同名方法时,jvm不会知道你到底要复写哪个方法,产生了混淆
而B继承A,C继承B时不会发生这种事,所以这种继承是允许的.

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
java中的单继承是指一个类只能有一个直接父类
如果你A类继承自B,A就不extends Object了,但是你的B是extends Object的,
所以A也继承自Object,是一个间接父类

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马