• javascript 与 java继承问题


    java里是没有多继承的,即一个子类不能同时继承多个父类,但可以实现多个接口,这也间接的实现了多继承。 

    关键字 extends 继承,implements 接口

    使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

     (接口是一些抽象方法的集合,编写接口时不需要实现方法,只需要声 明方法名即可,在需要使用接口提供的功能的类中去覆盖或实现这些方法,接口只是一个协议,继承接口了就必须实现接口内的所有方法)

    public class Animal { 
     public
    Animal(String myName) {
      name = myName;
    }
      public void eat(){
      
    System.out.println(name+"正在吃");
    }

    public class Dog extends
    Animal { }
    public interface A {
        public void eat();
    }
     
    public interface B {
        public void show();
    }
    public class C implements A,B {
    }

    而javascript是可以利用call方法和prototype属性来实现多继承的。继承方法与单继承相似,只是将需要继承的多个父类依次实现,另外对于 
    属性或共有方法重命的时候,以最后继承的属性和方法为主。后面的会覆盖前面的继承:

    <script type="text/javascript">
        function A(name,age){
            this.name = name;
            this.age = age;    
            this.weight = 120;
        }
        //通过原型 添加方法
        A.prototype.say = function(){
            alert(111);
        }
        function B(name,age,sex){
            this.name = name;
            this.age = age;
            this.sex =sex;
            this.weight = 130;
        }
        B.prototype.say = function(){
            alert(222);
        }
        function C(name,age,sex){
            //这里用call 不能继承 父类新增的 方法
    //                A.call(this,name,age);
    //                B.call(this,name,age,sex);
            var  a = new A(name,age);
            var  b = new B(name,age,sex);
            //便利对象 中的所有属性和方法,赋值给C
            for(var i in a){
                C.prototype[i] = a[i];
            }                
            for(var j in b){
                C.prototype[j] = b[j];
            }
        }
        var  c = new C('xm',18,5);
        console.log(c);
        c.say();//alert(222)
    </script>

    结果: 

  • 相关阅读:
    ES6——Promise
    ES6——generator-yield
    ES6——generator
    JQuery——关于CDN(内容分发网络)
    关于JSON使用要注意的地方
    第7课
    第6课
    第5课
    第4课
    第3课
  • 原文地址:https://www.cnblogs.com/lk4525/p/6497008.html
Copyright © 2020-2023  润新知