精华内容
下载资源
问答
  • java多重继承

    2020-12-25 17:16:54
    类的继承是存在局限性的,一个 子类只能继承一个父类,但是可以多重继承多重继承就是先让B类继承A类,之后再让C类继承B类。 calss A{} //这是父类 class B extends Af{; //此时 B类具备了A的操作 class C ...

    类的继承是存在局限性的,一个 子类只能继承一个父类,但是可以多重继承,多重继承就是先让B类继承A类,之后再让C类继承B类。

    calss A{}   //这是父类

    class B extends Af{;   //此时 B类具备了A的操作

    class C extends B{};   //此时 C类有A类和B类的所有操作  

     

    DEMO:多重继承

    此时C类就继承了A类和B类的属性以及方法,其实上在实例化子类的时候会调用父类的构造方法(虽然子类不能继承父类的构造方法,但是在实例化子类的时候会默认调用),而且默认调用的是无参构造方法。

     

    DEMO:调用父类的构造方法

    通过上面的错误提示就可以知道实例化子类的时候一定要先调用父类的构造方法,默认调用的是无参数构造方法,此时如果提供了有参数构造方法,那么我们要将无参数构造方法显示的定义。

     

    DEMO:无参构造方法调用

    知道了实例化子类的时候需要调用父类的无参构造方法,如果要调用父类的有参数构造方法呢?此时需要使用到一个新的关键 字“super

     

    DEMO:调用有参数构造方法

    以上就是构造方法在子类和父类之间调用的关系,你要清楚。

    总结:

    1、继承有单继承的局限(一个子类只能有一个父类),但是可以多重继承

    2、在实例化子类的时候会先调用父类的构造方法(默认调用的是无参数构造,如果要调用有参数构

    造需要使用关键字super实现)

    3、如果是多重继承,那么实例化子类的时候最先调用的是最高父类的构造方法,依次往下

    以下是我整理的Java学习资料免费提供

    这里的话我也将我之前在学习过程中用到的一些学习资料整理成了文档,以及我自身之前的一个面试文案和知识点补充,有需要的朋友可以加我的QQ学习交流群   697888503   ,这里也希望大家最终都能够学有所成,学习编程不是一天两天的功夫,勤能补拙才是硬道理,祝大家最终都能成为一名合适开发攻城狮。 

    展开全文
  • java 多重继承

    2016-10-17 10:37:37
    生活中有没有这样一种例子,有一样东西既是一种东西,又可以是另一种东西,比如平板电脑,它既可以实现手机的功能,又可以实现电脑的功能,这正好就体现了多重继承了。 先来声明一个手机的抽象类 abstract class ...

    生活中有没有这样一种例子,有一样东西既是一种东西,又可以是另一种东西,比如平板电脑,它既可以实现手机的功能,又可以实现电脑的功能,这正好就体现了多重继承了。
    先来声明一个手机的抽象类

    abstract class Phone{
        abstract void call();
        abstract void watchMovie();
        abstract void playGames();
    }

    然后我们再来声明一个电脑的抽象类

    abstract class PC{
        abstract void writeProgram();
        abstract void playGames();
        abstract void chatWithFriend();
    }

    电脑上可以玩游戏,写软件,和朋友聊天什么的
    那么我们再来创建一个平板电脑的类,那平板电脑可以通过一种什么样的方式来实现同时继承这两个类的方法呢?
    我们可以通过内部类来实现它

    class OuterPanelComputer extends Phone{
    
        @Override
        public void call() {
            // TODO Auto-generated method stub
            System.out.println("call");
        }
    
        @Override
        public void watchMovie() {
            // TODO Auto-generated method stub
            System.out.println("watchMovie");
        }
    
        @Override
        public void playGames() {
            // TODO Auto-generated method stub
            System.out.println("playGames");
        }
        class PanelComputer extends PC{
    
            @Override
            public void writeProgram() {
                // TODO Auto-generated method stub
                System.out.println("writeProgram");
            }
    
            @Override
            public void playGames() {
                // TODO Auto-generated method stub
                System.out.println("playGames");
            }
    
            @Override
            public void chatWithFriend() {
                // TODO Auto-generated method stub
                System.out.println("chatWithFriend");
            }
            public void call() {
                // TODO Auto-generated method stub
                OuterPanelComputer.this.call();
            }
    
            public void watchMovie() {
                // TODO Auto-generated method stub
                OuterPanelComputer.this.watchMovie();
            }
        }
    }

    注意这里内部类在复写的call和watchmovie方法里调用了外部类的call 和watchmovie
    由于内部类是可以访问到外部类的所有的方法的,所以,这里我们创建一个内部类的对象的话,实际上也可以看作是在创建一个继承两个类的类,也就是伪多重继承。

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            OuterPanelComputer outerpanelcomputer = new OuterPanelComputer();
            OuterPanelComputer.PanelComputer panelcomputer = outerpanelcomputer.new PanelComputer();
            panelcomputer.chatWithFriend();
            panelcomputer.playGames();
            panelcomputer.watchMovie();
            panelcomputer.call();
            panelcomputer.writeProgram();
        }
    }

    这样的话,就能实现多重继承了,实际上我们也是在操控内部类。

    展开全文
  • 生活中有没有这样一种例子,有一样东西既是一种东西,又可以是另一种东西,比如平板电脑,它既可以实现手机的功能,又可以实现电脑的功能,这正好就体现了多重继承了。先来声明一个手机的抽象类abstract class Phone...

    生活中有没有这样一种例子,有一样东西既是一种东西,又可以是另一种东西,比如平板电脑,它既可以实现手机的功能,又可以实现电脑的功能,这正好就体现了多重继承了。

    先来声明一个手机的抽象类

    abstract class Phone{

    abstract void call();

    abstract void watchMovie();

    abstract void playGames();

    }

    然后我们再来声明一个电脑的抽象类

    abstract class PC{

    abstract void writeProgram();

    abstract void playGames();

    abstract void chatWithFriend();

    }

    电脑上可以玩游戏,写软件,和朋友聊天什么的

    那么我们再来创建一个平板电脑的类,那平板电脑可以通过一种什么样的方式来实现同时继承这两个类的方法呢?

    我们可以通过内部类来实现它

    class OuterPanelComputer extends Phone{

    @Override

    public void call() {

    // TODO Auto-generated method stub

    System.out.println("call");

    }

    @Override

    public void watchMovie() {

    // TODO Auto-generated method stub

    System.out.println("watchMovie");

    }

    @Override

    public void playGames() {

    // TODO Auto-generated method stub

    System.out.println("playGames");

    }

    class PanelComputer extends PC{

    @Override

    public void writeProgram() {

    // TODO Auto-generated method stub

    System.out.println("writeProgram");

    }

    @Override

    public void playGames() {

    // TODO Auto-generated method stub

    System.out.println("playGames");

    }

    @Override

    public void chatWithFriend() {

    // TODO Auto-generated method stub

    System.out.println("chatWithFriend");

    }

    public void call() {

    // TODO Auto-generated method stub

    OuterPanelComputer.this.call();

    }

    public void watchMovie() {

    // TODO Auto-generated method stub

    OuterPanelComputer.this.watchMovie();

    }

    }

    }

    注意这里内部类在复写的call和watchmovie方法里调用了外部类的call 和watchmovie

    由于内部类是可以访问到外部类的所有的方法的,所以,这里我们创建一个内部类的对象的话,实际上也可以看作是在创建一个继承两个类的类,也就是伪多重继承。

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    OuterPanelComputer outerpanelcomputer = new OuterPanelComputer();

    OuterPanelComputer.PanelComputer panelcomputer = outerpanelcomputer.new PanelComputer();

    panelcomputer.chatWithFriend();

    panelcomputer.playGames();

    panelcomputer.watchMovie();

    panelcomputer.call();

    panelcomputer.writeProgram();

    }

    }

    这样的话,就能实现多重继承了,实际上我们也是在操控内部类。

    展开全文
  • 接口多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往...

    接口

    多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要思考的不是怎么使用多重继承,而是您的设计是否存在问题.但有时候我们确实是需要实现多重继承,而且现实生活中也真正地存在这样的情况,比如遗传:我们即继承了父亲的行为和特征也继承了母亲的行为和特征。可幸的是Java是非常和善和理解我们的,它提供了两种方式让我们曲折来实现多重继承:接口和内部类。

    在介绍接口和抽象类的时候了解到子类只能继承一个父类,也就是说只能存在单一继承,但是却可以实现多个接口,这就为我们实现多重继承做了铺垫。

    对于接口而已,有时候它所表现的不仅仅只是一个更纯粹的抽象类,接口是没有任何具体实现的,也就是说,没有任何与接口相关的存储,因此也就无法阻止多个接口的组合了。

    interfaceCanFight {voidfight();

    }interfaceCanSwim {voidswim();

    }interfaceCanFly {voidfly();

    }public classActionCharacter {public voidfight(){

    }

    }public class Hero extends ActionCharacter implementsCanFight,CanFly,CanSwim{public voidfly() {

    }public voidswim() {

    }/*** 对于fight()方法,继承父类的,所以不需要显示声明*/}

    内部类

    上面使用接口实现多重继承是一种比较可行和普遍的方式,在介绍内部类的时候谈到内部类使的多继承的实现变得更加完美了,同时也明确了如果父类为抽象类或者具体类,那么我就仅能通过内部类来实现多重继承了。如何利用内部类实现多重继承,请看下面实例:儿子是如何利用多重继承来继承父亲和母亲的优良基因。

    首先是父亲Father和母亲Mother:

    public classFather {public intstrong(){return 9;

    }

    }public classMother {public intkind(){return 8;

    }

    }

    重头戏在这里,儿子类Son:

    public classSon {/*** 内部类继承Father类*/

    class Father_1 extendsFather{public intstrong(){return super.strong() + 1;

    }

    }class Mother_1 extendsMother{public intkind(){return super.kind() - 2;

    }

    }public intgetStrong(){return newFather_1().strong();

    }public intgetKind(){return newMother_1().kind();

    }

    }

    儿子继承了父亲,变得比父亲更加强壮,同时也继承了母亲,只不过温柔指数下降了。这里定义了两个内部类,他们分别继承父亲Father类、母亲类Mother类,且都可以非常自然地获取各自父类的行为,这是内部类一个重要的特性:内部类可以继承一个与外部类无关的类,保证了内部类的独立性,正是基于这一点,多重继承才会成为可能。

    展开全文
  • 类的继承是存在局限性的,一个 子类只能继承一个父类,但是可以多重继承多重继承就是先让B类继承A类,之后再让C类继承B类。calss A{} //这是父类class B extends Af{; //此时 B类具备了A的操作class C extends B{}...
  • 多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要...
  • 接口只是比抽象类“更纯”的一种形式。它的用途并不止那些。由于接口根本没有具体的实施...在C++中,将多个类合并到一起的行动称作“多重继承”,而且操作较为不便,因为每个类都可能有一套自己的实施细节。在Java...
  • 生活中有没有这样一种例子,有一样东西既是一种东西,又可以是另一种东西,比如平板电脑,它既可以实现手机的功能,又可以实现电脑的功能,这正好就体现了多重继承了。先来声明一个手机的抽象类abstract class Phone...
  • Java中的接口不仅仅是一种更纯粹的抽象类,它的目标...在C++中,组合多个类的接口的行为被称作为多重继承。它可能会使你背负很沉重的包袱,因为每个类都有一个具体实现。在java中,你可以执行相同的行为,但是只有一...
  • 多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要...
  • ------------------siwuxie095多继承 和 多重继承,两个词差别不大,但是差之毫厘、谬以千里 …多重继承如果有这样三个类:人类、士兵类、步兵类,其中:士兵类继承了人类,步兵类继承了士兵类,这三个类之间的关系...
  • 下面程序中输出*******C*******有点不理解的地方是程序的执行顺序我大概画了... } } public class java { public static void main(String[] args) { Diagram diagram = new Diagram(); diagram.drawShapes(); } } 展开
  • 首先我们将了解什么是继承?...什么是多重继承?继承是适用于大多数编程语言的概念。当A类可以由B类扩展并且B类可以由C类扩展时。语法interfaceA{publicvoida(){}}interfaceBextendsA{publicvoida(){}}classCimpl...
  • import java.awt.CardLayout;public classPolymorphism {/*** java 中的每一中操作,操作的数据类型必须合法。父类有的方法子类都有* 凡是能够使用父类生成对象的地方都可以使用子类生成对象.** 多态性* 是指允许...
  • 但是用接口的话,就很单一了,所有的接口都没有实现~所以随便从哪个接口里来继承并覆盖这个方法都无所谓~ 以上所述是小编给大家介绍的java为什么不允许类多重继承却允许接口多重继承详解整合,希望对大家有所帮助,...
  • 刘小禄吧务回答数:90|被采纳数:1272017-01-13 20:40:17实现接口多继承参考例子 如下:求三角形,...import java.text.DecimalFormat;interface CalcMethods {void calcArea();void calcPerimeter();}class Triang...
  • 这一节我们来看java中的单继承和多重继承。在java语言中,支持的是单继承,不直接支持多继承,可是对C++中的多继承进行了改良。那么什么是单继承和多继承呢?单继承:一个子类仅仅能有一个直接父类。多继承:一个...
  • Java语言(非JVM)对于方法重载(Overload)的判断仅限于参数列表,即如果需要重载方法,它的参数列表必须不同,不能以方法名和参数相同而返回值(或抛出的异常)不同的方式重载方法。可以通过反射机制验证这一点,即我们...
  • Java多重继承实现方法

    2019-10-16 09:41:22
    我们都知道,在Java中一个类可以多重实现,但是不能多重继承。也就是说一个类可以同时实现多个接口,但不能同时继承多个类。有时候我们需要让一个类同时拥有多个类的行为功能。这时候使用单继承特性就很难解决问题了...
  • 多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要...
  • java 多重继承的困境

    2017-08-02 17:24:57
    多重继承的困境 1.接口:interface java中定义类型的一种语法(其他定义类型的语法:class)。 接口不能直接创建对象 格式: public interface 接口名{内容} 内容: 属性:只能设置常量:...
  • 看一下运行结果 结果3个this都是A对象,因为在main方法创建的是A对象,A继承了B, B继承了C,所以A就拥有B、C里面的全部方法,往父类里面的this全部是你创建的A对象。 ========================================...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,190
精华内容 1,676
关键字:

java多重继承

java 订阅