面向对象 part6 继承
继承
js实现的是实现继承/也就是继承实际的方法
//主要依赖:原型链
//基本思路: 就是一个引用类型继承另一个引用类型的属性和方法
详细:构造函数,实例,原型之间的关系。每个构造函数都有一个原型对象,原型对象都包含一个指针指向构造函数
每个实例都包含一个内部指针指向原型。假如我们让一个原型对象等于宁一个类型的实例。此时的原型对象将包含一个
内部指针指向另一个原型。以此类推。。。
默认的原型
所有引用类型都默认继承了Object。而这个继承也是通过原型链实现的。
所有函数的默认原型都是Object的实例
这也就是为什么所有自定义类型都会继承toString()等默认方法。
谨慎定义方法
继承的时候
子类重写原型中的方法会屏蔽原型的方法。但是不改变原型中的这个方法
子类调用是新方法,原型调用还是原来的方法
原型继承的时候,不要使用字面量方法,字面量方法会重写原型链
原型链的问题
1.引用类型的值问题
function SuperType() = {
this.colors = ["red", "blue"]
}
function SubType() = {}
//继承了SuperType
//同时生成一个超类的实例
//该实例是调用了超类构造函数
//也就是同时调用了超类构造函数中的this
//SubType.prototype.colors = ["red", "blue"]
SubType.prototype = new SuperType()
var instance1 = new Subtype()
//此时调用的是原型中color
//修改的同时会反应在其他实例
instance1.colors.push("black")
var instance2 = new SubType()
instance2.color // "red, blue,black"
2.不能像超类型的构造函数中传递参数。没有办法在不影响实例的情况下。给超类型的构造函数传递参数
原型式继承(实现浅复制)
当没有必要创建构造函数的时候,只想让一个对象与另一个对象保持类似的情况。
不过包含引用值属性始终都会共享相应的值。就像使用原型模式
面向对象 part6 继承的更多相关文章
- 黑马程序员_Java面向对象2_继承
4.面向对象_继承 4.1继承的概述 提高了代码的复用性. 让类与类之间产生了关系,有了这个关系,才有多态的特性. 注意:千万不要为了获取其他类的功能而去继承,简化代码而继承.必须是类与类之间有所属关 ...
- C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域
面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:假设不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这样的类作用域的层次嵌套使 ...
- 【Java基础】【08面向对象_继承&方法&final】
08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以 ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- 面向对象多继承(c3算法)、网络基础和编写网络相关的程序
一.面向对象多继承(c3算法) a.有多个父类先找左,再找右,如下示例: class A(object): pass class B(object): def f1(self): print('B') ...
- Python 面向对象编程 继承 和多态
Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...
- python之面向对象(继承)
类的继承 python之面向对象(继承) 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法 c ...
- python面向对象编程 继承 组合 接口和抽象类
1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均用点来访问自己的 ...
- Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类
一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...
随机推荐
- Oozie笔记
简介 Oozie 是用于 Hadoop 平台的开源的工作流调度引擎. 用于管理 Hadoop 属于web应用程序, 由 Oozie client 和 Oozie Server 两个组件构成. Oozi ...
- 备份CSDN
说明:https://blog.csdn.net/Feynman1999/article/details/87908082 源码:https://github.com/Feynman1999/CSDN ...
- Spring Boot Hello World (restful接口)例子
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- spring boot 开发环境搭建(Eclipse)
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- 解决Spring Mvc中接受参数绑定重名的方法
html页面 <form method='post' action='url'> 用户名 <input type='text' name='name'> 用户id <in ...
- spring源码 ConfigurableListableBeanFactory根接口
用机器翻译+原作者的翻译:https://blog.csdn.net/u011179993/article/details/51636742 /* * Copyright 2002-2015 the ...
- flutter文本简单实现
import 'package:flutter/material.dart'; import 'package:flustars/flustars.dart'; import 'package:fl_ ...
- HTTP TCP UDP ICMP IP ARP 协议详解(10.15 第二十一天)
ARP协议 ARP(Address Resolution Protocol)协议 地址解析协议 把网络层的IP地址翻译成在数据链路层寻址的48位硬件地址(MAC地址) 在OSI模型中ARP协议属于链路 ...
- windows driver 定时器的使用
#include < Ntifs.h> #pragma warning(disable:4995) #pragma comment(lib, "Ntoskrnl.lib" ...
- python3.7使用etree遇到的问题
使用python3.6时安装好lxml时按照许多网上的教程来引入会发现etree没被引入进来 解决办法: 一.import lxml.htmletree = lxml.html.etree这样就可以使 ...