javascript中子类如何继承父类

参考阮一峰的文章:http://javascript.ruanyifeng.com/oop/inheritance.html#toc4

function Shape() {
  this.x = 0;
  this.y = 0;
}

Shape.prototype.move = function (x, y) {
  this.x += x;
  this.y += y;
  console.info(‘Shape moved.‘);
};

function Rectangle() {
  Shape.call(this); // 调用父类构造函数
}
// 另一种写法
function Rectangle() {
  this.base = Shape;
  this.base();
}

// 子类继承父类的方法
Rectangle.prototype = Object.create(Shape.prototype);
Rectangle.prototype.constructor = Rectangle;

var rect = new Rectangle();

rect instanceof Rectangle  // true
rect instanceof Shape  // true

rect.move(1, 1) // ‘Shape moved.‘

上面代码表示,构造函数的继承分成两部分,一部分是子类调用父类的构造方法,另一部分是子类的原型指向父类的原型。

上面代码中,子类是整体继承父类。有时,只需要单个方法的继承,这时可以采用下面的写法。

ClassB.prototype.print = function() {
  ClassA.prototype.print.call(this);
  // some code
}

上面代码中,子类Bprint方法先调用父类Aprint方法,再部署自己的代码。这就等于继承了父类Aprint方法。

时间: 2024-08-29 12:11:17

javascript中子类如何继承父类的相关文章

Java中子类能继承父类的私有属性吗?

前段时间去听老师讲课的时候,老师告诉我子类是可以继承父类所有的属性和方法的.当时我是极其疑惑的,因为之前学校考试时这个考点我记得很清楚:子类只能继承父类的非私有属性和方法.老师给我的解释是这样的--先看下面一段代码 /** * 定义父类 * @author CBS */ public class Father { private String name;//私有属性 private char sex; public void tell(){ System.out.println(name+sex

java中字段继承问题--子类不能继承父类的私有成员

public class Test1 { private int t1 = 1; public int getT1() { return t1; } public void setT1(int t1) { this.t1 = t1; } } 以上是Test1类,有个private的t1,值为1,给了get/set方法. public class Test2 extends Test1 { private int t1 = 2; public static void main(String[] a

javascript中的对象继承关系

相信每个学习过其他语言的同学再去学习JavaScript时就会感觉到诸多的不适应, 这真是一个颠覆我们以前的编程思想的一门语言,先不要说它的各种数据类型以及表达 式的不同了,最让我们头疼,恐怕就是面向对象的部分了,在JavaScript中,是没有给定一 个创建对象的关键词的,它不像Java中一个class就可以创建一个对象,在JavaScript中, 对象是一个十分松散的的key-value对的组合,通常,我们在创建对象时,可以通过{}来直 接生成一个对象,就像我们之前所学的,对象中有属性,有行

javascript中最佳的继承方案

首先是为什么要继承? 万物皆对象,在面向对象思想的开发中,研发一个汽车是需要一个一个部件组成的,每一个部件都是一个对象,每个对象都有自己的功能和职责,而继承就是要解决对象之间避免的重复造轮子,避免做重复的工作. 比如:我已经有了一个汽车的近光灯对象,我还需要构建一个远光灯对象,让这个灯的功能变得更加强大,我当然不想在重新学习.如何买材料.制作技术等等,我只需要将制作近光灯的技术搬以致用就行了,甚至我还可以增加新的功能,给它扩展一个远光的功能,这样一来我的成本是不是就很低了呢,这样一来我的核心置关

子类会继承父类对于接口的实现

项目截图: 实现代码: 1 package exercise2; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 7 interface CircleShape { 8 double PI = 3.14159; 9 10 double area(double radius); 11 } 12 13 class Circle implemen

javascript中的对象继承关系(2)

在上一章中,我们着重介绍了JavaScript中类之间的原型继承关系:原型继承对于继承类中的方法来说是很方便的.那么我们今天就来看一下继承中的类继承以及类继承和原型继承的混用,所谓类继承,就是使用call或者apply方法来进行冒充继承: 1 function Desk(size,height){ 2 this.size=size; 3 this.height=height; 4 } 5 function MJDesk(size,height){ 6 Desk.call(this,size,he

子类可以继承父类的一切方法,成员变量,甚至是私有的,但是却不能够访问这些私有的成员变量和方法

1.关于私有成员变量 无论父类中的成员变量是私有的.共有的.还是其它类型的,子类都会拥有父类中的这些成员变量.但是父类中的私有成员变量,无法在子类中直接访问,必须通过从父类中继承得到的protected.public方法(如getter.setter方法)来访问. 2.关于静态成员变量 无论父类中的成员变量是静态的.还是非静态的,子类都会拥有父类中的这些成员变量. 3.关于被子类覆盖的成员变量 无论父类中的成员变量是否被子类覆盖,子类都会拥有父类中的这些成员变量. 原文地址:https://ww

构造函数的继承--子类不继承父类的构造函数,只能调用

关于子类对父类构造函数的继承: 子类必须调用父类的构造函数.默认情况下会自动调用父类的无参构造函数.如果父类没有无参构造函数,则必须显式的用super()调用一个构造函数. 创建对象时,先调用父类的构造函数对对象进行初始化, 然后再调用子类自己的构造函数 子类只继承(其实是默认调用)父类的默认(无参)构造函数,如果父类重写了自己的构造函数,就会导致父类没有无参构造函数,这样子类就不能从父类继承构造函数.

javascript 中的原型继承

javascript圆形变成的基本规则: 所有数据都是对象: 要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它: 对象会记住它的原型: 如果对象无法响应某个请求,它会把这个请求委托给它自己的原型: 所有的数据都是对象 在javascript的类型中,分为两类:基本类型和复杂类型: 基本类型包括:undefined.number.boolean.string.null:基本类型可以通过包装类的方式变成对象类型数据来处理: 复杂类型:object; 1.1  包装对象:所谓"包装对