class-为子类挂载独有的实例属性和实例方法|学习笔记

简介: 快速学习 class-为子类挂载独有的实例属性和实例方法

开发者学堂课程【React 入门与实战class-为子类挂载独有的实例属性和实例方法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/585/detail/8100


class-为子类挂载独有的实例属性和实例方法


一、为子类挂载独有的实例属性和方法

class Person{
constructor(name,age){

this.name = name

this.age = age

}

sayHello(){

console.log(‘大家好’)

}

}

class American extends Person{

constructor(name,age){

//问题1:为什么一定要在 constructor 中调用 super

//答案:因为如果一个子类,通过 extends 关键字继承了父类。那么在子类constructor 构造函数中,必须优先调用 super()

//问题2super 是什么东西?

//答案:super 是一个函数,而且它是父类的构造器,子类中的 super 其实就是父类中,constructor 构造器的一个引用

//问题3:为什么调用了 super 之后,a1 实例的 name age 都变成了 undefined 了?

super(name,age)

}

}

const a1 = new American(‘Jack’,20)

console.log(a1)

a1.sayHello()

class Chinese extends Person{

//name姓名

//age 年龄

//IDNumber 身份证号 【中国人独有】 既然是独有的,就不适合挂载到父类

constructor(name,age, IDNumber){

//语法规范,在子类中,this 只能放到 super 之后使用

this.IDNumber = IDNumber

super(name,age)

}

}

const c1 = new American(‘张三’,20’130428*******’)

console.log(c1)

c1.sayHello()

实例属性:是通过 new 出来的实例访问到的属性

class Animal{

//类中的构造器

constructor (name,age)

{

this.name=name; // 实例属性

this.age=age; // 实例属性

}

}

console.log(a1.name)

console.log(a1.age)

实例方法:挂载到原型对象 prototype 上的方法

function Person(name,age)

{

this.name=name;

this.age=age;

}

//实例方法

Person.prototype.speak=function()

{

console.log("Person的实例方法")

}

p1.speak();

实例方法在调用时 通过创建出的对象调用

相关文章
|
1天前
|
搜索推荐
如何在构造函数中为类的实例添加方法?
在实际开发中,要根据具体的场景和需求来选择合适的方式来为类的实例添加方法,以确保代码的可读性、可维护性和性能。
|
7天前
|
设计模式
在静态方法中访问类的实例属性和方法时会发生什么?
总之,静态方法主要用于处理与类本身相关的操作和逻辑,不应该直接访问类的实例属性和方法。如果需要在静态方法中使用与实例相关的信息,应该通过合理的参数传递或其他设计模式来实现,以保持代码的清晰性和面向对象设计的原则。
35 8
|
5月前
|
Java 编译器 数据处理
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
JavaSE——面相对象高级一(4/4)-继承相关的注意事项:权限修饰符、单继承、Object类、方法重写、子类访问成员的特点......
57 0
|
Java 开发者
Class 类对象的三种实例化模式|学习笔记
快速学习 Class 类对象的三种实例化模式
174 0
Class 类对象的三种实例化模式|学习笔记
第五周学习java 继承 在子类父类中有相同参数,子类继承分类后如何进行调用,判断创建的对象属性哪个类
第五周学习java 继承 在子类父类中有相同参数,子类继承分类后如何进行调用,判断创建的对象属性哪个类
第五周学习java 继承 在子类父类中有相同参数,子类继承分类后如何进行调用,判断创建的对象属性哪个类
|
C++ 小程序
c++类的实例化,有没有new的区别
A a; A * a = new a(); 以上两种方式皆可实现类的实例化,有new的区别在于: 1.前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。
1241 0
|
JavaScript 前端开发 开发者
class-创建类并通过 constructor 挂载实例属性|学习笔记
快速学习 class-创建类并通过 constructor 挂载实例属性
225 0
|
应用服务中间件 Python
|
JavaScript 前端开发 Java
创建Class类的实例对象的三种方法
创建Class类的实例对象的三种方法
256 0
class-为子类挂载独有的实例属性和实例方法
class-为子类挂载独有的实例属性和实例方法