构造函数

ES6学习笔记(二):教你玩转类的继承和类的对象

╄→гoц情女王★ 提交于 2020-02-26 21:54:50
继承 程序中的继承: 子类可以继承父类的一些属性和方法 class Father { //父类 constructor () { } money () { console.log(100) } } class Son extends Father { //子类继承父类 } let son = new Son() son.money() // 100 son. super关键字 super关键字用于访问和调用对象父类上的函数,可以通过调用父类的构造函数,也可以调用父类的普通函数 class Father { //父类 constructor (x, y) { this.x = x this.y = y } money () { console.log(100) } sum () { console.log(this.x + this.y) } } class Son extends Father { //子类继承父类 constructor (x, y) { super(x, y) //调用了父类中的构造函数 } } let son = new Son(1,2) son.sum() // 3 son. 继承的特点: 继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类,(就近原则) 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有

6种JavaScript继承方式及优缺点

最后都变了- 提交于 2020-02-26 18:37:44
友情提示: 想要更好的理解JS继承方式,须了解构造函数、原型对象、实例化对象、原型链等概念 第一种:原型链继承 利用原型链的特点进行继承 function Parent(){ this.name = 'web前端'; this.type = ['JS','HTML','CSS']; } Parent.prototype.Say=function(){ console.log(this.name); } function Son(){}; Son.prototype = new Parent(); son1 = new Son(); son1.Say(); 以上例子解释: ①创建一个叫做Parent的构造函数,暂且称为父构造函数,里面有两个属性name、type ②通过Parent构造函数的属性(即原型对象)设置Say方法,此时,Parent有2个属性和1个方法 ③创建一个叫做Son的构造函数,暂且称为子构造函数 ④设置Son的属性(即原型对象)值为父构造函数Parent的实例对象,即子构造函数Son继承了父构造函数Parent,此时Son也有2个属性和1个方法 ⑤对Son构造函数进行实例化,结果赋值给变量son1,即son1为实例化对象,同样拥有2个属性和1个方法 ⑥输出son1的Say方法,结果为"web前端" 优点:可以实现继承 缺点: ①因为Son.prototype

单例模式

孤者浪人 提交于 2020-02-26 10:10:50
单例模式中,只能创建一个类对象,可以用在多次电机按钮只弹出一个窗体 //单例模式编写的步骤: 第一步,将类的构造函数的访问修饰符改成private,这样外部就不能创建该类的对象了 第二步:在该类中增加一个public访问修饰符的静态方法。 通过以上两步,就实现了,外部不能通过new关键字调用该类的构造函数来创建类的对象,要创建对象必须通过调用该静态函数CreateInstance()来创建对象。这样就可以在CreateInstance()方法中控制创建对象的过程 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 单例模式 { class Program { static void Main(string[] args) { #region 1 //// Person p = new Person(); //Person p1 = Person.CreateInstance(); //Person p2 = Person.CreateInstance(); //单例模式第一步,将类的构造函数的访问修饰符改成private,这样外部就不能创建该类的对象了 //第二部:在该类中增加一个public访问修饰符的静态方法。 //通过以上两步,就实现了

100+经典Java面试题及答案解析

情到浓时终转凉″ 提交于 2020-02-26 09:59:53
面向对象编程(OOP) Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改。 代码复用。 增强代码的可靠性和灵活性。 增加代码的可理解性。 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个分析这些特性。 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。 下面列出了使用封装的一些好处: 通过隐藏对象的属性来保护对象内部的状态。 提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。 禁止对象之间的不良交互提高模块化。 参考这个文档获取更多关于封装的细节和示例。 多态 多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作可以应用到其他类型的值上面。 继承 继承给对象提供了从基类获取字段和方法的能力。继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。 抽象 抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类

c#学习历程2

拜拜、爱过 提交于 2020-02-26 05:27:08
一.类的访问权限 访问修饰符:internal ;public ;abstract 或者internal abstract public abstract;sealed或internal sealed / /不写修饰,默认为internal,同一程序集都可访问 internal class MyClass { } //抽象类,不能被实例化,只能被继承 abstract class ClassA { } //密封类,只能被实例化,不能被继承 sealed class ClassB { } 二.字段方法 字段:由三部分组成----访问修饰符,字段的类型和字段名。 属性:是对字段的扩充,保证内部成员的完整性(这样字段可以定义为私有,通过属性赋字段值 取字段值) class ClassC { // 字段 public int a ; public int b = 1 ; public static int c = 2 ; public const int d = 3 ; public readonly int e ; //只读类型 } //属性 class ClassD { private string name ; private int age ; public string Name { //value为隐形 set { name = value ; } get { return

构造函数

岁酱吖の 提交于 2020-02-26 00:16:03
构造函数的函数体是个赋值语句, 编译器提供的构造函数 类名() { } 只是为了保证开辟存储空间 如果人为的提供构造函数,那么编译器的就不存在了; 可以在构造函数里边加初始化列表 来源: CSDN 作者: Tine Chan 链接: https://blog.csdn.net/chanleoo/article/details/104117010

JAVA生疏笔记 正则表达式

允我心安 提交于 2020-02-25 21:56:18
Java 正则表达式 正则表达式==一个字符串 定义了字符串的模式 用于匹配 菜鸟教程学习链接 https://www.runoob.com/java/java-regular-expressions.html 构造方法 当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。 通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。 不管你是否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)。 一旦你定义了自己的构造方法,默认构造方法就会失效。 Puppy myPuppy = new Puppy( "tommy" ); 对象 类名=NEW 对象 Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。 Scanner s = new Scanner(System.in); 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 即外壳不变,核心重写! 重载(Overload) 重载

【三类构造函数】

偶尔善良 提交于 2020-02-25 13:01:02
#include<iostream> using namespace std; int n = 0; class Student{ private: int num; public: //默认构造函数 Student(){ cout<<"调用默认构造函数"<<endl; }; //有参构造函数 Student(int num){ this->num = num; cout<<"调用有参构造函数"<<endl; }; //拷贝构造函数 Student(const Student &s){ num = s.num; cout<<"调用拷贝构造函数"<<++n<<"次"<<endl; }; ~Student(){}; }; void fun1(Student s){ //由于函数的参数是类,所以会调用拷贝构造函数 } Student fun2(){ Student s1; return s1; } int main(){ Student s1; Student s2(10); Student s3(s2); fun1(s3); Student s4 = fun2(); return 0; } 注意事项: 1)如果写类时,什么构造函数都没写,那么系统将提供默认构造函数、拷贝构造函数 2)如果自己写了有参构造函数,那么系统不会提供默认构造函数,但还会提供拷贝构造函数 3

SWIFT3.0自定义转场动画

。_饼干妹妹 提交于 2020-02-25 12:20:50
SWIFT3.0自定义转场动画 //1.创建弹出的控制器 let popooverVc = PopoverViewController() //2.设置控制器的modal样式 popooverVc.modalPresentationStyle = .custom //3.设置转场的代理 popooverVc.transitioningDelegate = popoverAnimator popoverAnimator.presentedFrame = CGRect(x: 100, y: 55, width: 180, height: 250) //4.弹出控制器 present(popooverVc, animated: true, completion: nil) 2.设置弹出视图尺寸相关 class ADPresentationController: UIPresentationController { //对外提供属性用以设置弹出控制视图的尺寸 var presentedFrame : CGRect = CGRect.zero //蒙板view fileprivate lazy var coverView : UIView = UIView() //MARK: - 系统回调函数 override func containerViewWillLayoutSubviews() {

JavaScript:Number 对象

只谈情不闲聊 提交于 2020-02-25 07:55:33
ylbtech-JavaScript:Number 对象 1. Number 对象 返回顶部 Number 对象 Number 对象是原始数值的包装对象。 创建 Number 对象的语法: var myNum=new Number(value); var myNum=Number(value); 参数 参数 value 是要创建的 Number 对象的数值,或是要转换成数字的值。 返回值 当 Number() 和运算符 new 一起作为构造函数使用时,它返回一个新创建的 Number 对象。如果不用 new 运算符,把 Number() 作为一个函数来调用,它将把自己的参数转换成一个原始的数值,并且返回这个值(如果转换失败,则返回 NaN)。 Number 对象属性 属性 描述 constructor 返回对创建此对象的 Number 函数的引用。 MAX_VALUE 可表示的最大的数。 MIN_VALUE 可表示的最小的数。 NaN 非数字值。 NEGATIVE_INFINITY 负无穷大,溢出时返回该值。 POSITIVE_INFINITY 正无穷大,溢出时返回该值。 prototype 使您有能力向对象添加属性和方法。 Number 对象方法 方法 描述 toString 把数字转换为字符串,使用指定的基数。 toLocaleString 把数字转换为字符串,使用