面向对象方法

Java基础Note——面向对象01

早过忘川 提交于 2020-02-29 14:18:46
面向对象01 软件设计 原则: 可重用性,可拓展性,可维护性 面向对象的最小单位是类。 面向对象四大特征:封装,继承,多态,抽象 类和对象 特征:封装,继承,多态,抽象 关系:类是多个对象抽象出来的共性 对象是类的实例,类是对象的模板 类的定义 在面先过程中,专门为描述对象定义一个类,不需要main。 另外再创建测试类 内存分析 不同类型的成员变量的初始值就是各个类型的默认值。 对象的创建实质上类似于栈中有个指针,指向了堆空间中创建的一组数据。 对象打印和比较-生命周期-匿名对象 打印对象:对象名@hashcode.(哈希表中的值) 比较:对象直接 == 比较的是地址值 生命周期:new关键字在heap中开辟新空间创建,当堆中对象未被任何变量引用,且被GC回收时结束。 匿名对象:没有名称的对象,new Object();匿名对象在堆中开辟一块没有名称的对象, 只能使用一次 。 构造器 编译器在编译源文件时会默认创建一个缺省构造器,即默认的一个构造器。所以类中一定会有构造器 作用:1)构建对象,但是必须和new一起使用。2)完成对象初始化 特点 :构造器名称和当前类的名称相同;禁止使用返回类型,返回类型默认当前类的类型;不需要return; 构造器返回值是当前类的地址 new xxx(); 其实是调用类中的构造器创建对象。 编译器创建的默认构造器特点: 1)符合构造器特点。 2)无参

php面向对象基础知识点总结

故事扮演 提交于 2020-02-29 13:17:44
下面是一些PHP面向对象基础知识的摘录,摘录内容来自PHP5.1手册。 1.类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。 2.属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是 在编译阶段之后在运行阶段运算出的常数。 3.在类的成员方法里面,可以通过$this->property(property是属性名字)这种方式来访问类的属性、 方法,但是 要访问类的静态属性或者在静态方法里面却不能使用,而是使用self::$property。 4.在类的非静态方法里面可以使用伪变量$this,这个伪变量是调用该方法的实例化对象引用 5.常量的值必须是一个定值,不允许修改,且不能是变量,类属性或其它操作(如函数调用)的结果。 <?php class MyClass { const constant = 'constant value'; function showConstant() { echo self::constant . "\n"; } } echo MyClass::constant . "\n"; $n=new MyClass(); $n->showConstant(); ?> 6.构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

Java学习笔记(十三)面向对象---异常

一曲冷凌霜 提交于 2020-02-28 22:50:10
概述 对异常的理解 程序在运行过程中出现不正常情况。是对问题的描述,将问题进行对象的封装。 异常的由来 问题也是现实生活中一个具体的事物,也可以通过Java的类的形式进行描述,并封装成对象。 对于问题的划分 一种是严重的问题,一种是非严重的问题。 对于严重的:Java通过Error类进行描述。 对于Error一般不编写针对性的代码对其进行处理。 对于非严重的:Java通过Exception类进行描述。 对于Exception可以使用针对性的处理方式进行处理。 无论Error还是Exception都具有一些共性内容。 比如:不正常情况的信息,引发原因。 异常体系 Throwable |--Error |--Exception |--RuntimeException 异常体系的特点: 异常体系中的所有类以及被建立的对象都具备可抛性。 异常的处理 代码语句格式 try { 需要被检测的代码 } catch(异常类 变量) { 处理异常的代码(处理方式) } finally { 一定会执行的语句; } 对异常的常见操作方法 String getMessage(); String toString(); void printStackTrace(); class Demo { int div(int x,int y) { return x/y; } } public class

python面向对象之初步认识

假装没事ソ 提交于 2020-02-28 10:22:02
面向对象 类,用来描述一类事物的相同的特征或者属性。比如说,狗,狗属于一种统称,狗还分有不同的种类,比如,牧羊犬,蝴蝶犬,京巴等等,他们都有相同的特征,一个头,两个耳朵,四条腿,会跑,会吃东西,会汪汪叫。。。再比如汽车,四个轮子,都拥有车壳,都会跑,都有一定的承重。。。这些都是具备一些共同特征的事物。 类的定义方式: class ClassName: '类的帮助信息' # 类文档字符串 class_suite #类体,由类成员,方法,数据属性组成 下面是一个简单类的定义,其中函数内的self代指类的实例 class Cat: 'Cat类的帮助信息' def __init__(self): # 类的初始化方法 print("Cat 的init方法被调用") def eat(self): # 自定义方法 print("cat is eating") def run(self): # 自定义方法 print("cat is running") 如何使用这个类?与调用函数的方式类似,类的使用是通过类名()进行使用,返回的是一个对象,也就是实例。 tom = Cat() print(tom) # <__main__.Cat object at 0x000001B4A55123C8> 类中不仅仅可以定义函数,还可以定义变量。 class Car(object): 'Car' CarCount

JS面向对象(1)——构造函数模式和原型模式

落爺英雄遲暮 提交于 2020-02-28 09:09:11
1、构造函数模式 构造函数用来创建特定的类型的对象。如下所示: function Person(name,age,job){   this.name=name;   this.job=job;   this.age=age;   this.sayName=function(){     alert(this.name);   }; } var person1=new Person('nick',20,'student');var person2=new Person('nick',20,'student');alert(person1.sayName==person2.sayName);//false 构造函数特点:不需要显示地创建对象,直接将属性和方法赋给this对象; 创建构造构造函数的实例,需要用new操作符,new操作符会创建一个新对象,而后将构造函数的作用域指向新的对象。 构造函数的缺点:上面的例子中,构造函数内的sayName()方法,也可以写为 this.sayName()=new Function("alert(this.name)") 可以看出来,每次创建一个Person的实例都会创建一个新的sayName实例,不同的实例,有不同的作用域链和标识符解析,因此 不同实例上的同名函数不相等! 对于这个缺点,我们可以考虑一下

Day05面向对象,封装,this

对着背影说爱祢 提交于 2020-02-28 06:26:36
1.面向对象的2个点 *成员变量 *成员方法 2.使用对象,成员变量,成员方法 * 创建对象并使用 * 格式:类名 对象名 = new 类名(); *使用成员变量: 对象名.变量名 *使用成员方法: 对象名.方法名(...) 3. 成员变量和局部变量的区别 * A:在类中的位置不同 * 成员变量:在类中方法外 * 局部变量:在方法定义中或者方法声明上 * B:在内存中的位置不同 * 成员变量:在堆内存(成员变量属于对象,对象进堆内存) * 局部变量:在栈内存(局部变量属于方法,方法进栈内存) * C:生命周期不同 * 成员变量:随着对象的创建而存在,随着对象的消失而消失 * 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 * D:初始化值不同 * 成员变量:有默认初始化值 * 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。 * 注意事项: * 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。 * 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char * 引用数据类型变量包括哪些:数组,类,接口,枚举 4.方法的形式参数是类名的时候如何调用 class Demo1_Student { public static void main(String[] args) {

java面向对象5--内部类

谁说胖子不能爱 提交于 2020-02-28 05:28:01
6内部类 内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。 内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。 注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。所以内部类的成员变量/方法名可以和外部类的相同。 6.1成员内部类   成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。 要注意的是,成员内部类不能含有static的变量和方法。 因为成员内部类需要先创建了外部类,才能创建它自己的 ,了解这一点,就可以明白更多事情,在此省略更多的细节了。 在成员内部类要引用外部类对象时,使用outer.this来表示外部类对象; 而需要创建内部类对象,可以使用outer.inner obj = outerobj.new inner(); public class Outer { public class Inner { public void print

java基础学习3---面向对象

妖精的绣舞 提交于 2020-02-27 10:59:35
1、面向对象 对象:用来描述客观事物的一个实体,由一组属性和方法构成。 面向对象: 人关注对象 人关注事物信息 类 确定对象将会拥有的属性和方法 类的特点: 类是对象的类型 具有相同属性和方法的一组对象的集合。 类和对象的关系 类是抽象的概念 对象是一个能看到的具体实体 类是对象的类型 对象是特定类型的数据 具体开发中,先定义类再实例化对象。 对象实例化 Cat cat = new Cat ( ) ; 实例化过程分两部分: 声明对象 Cat cat 实例化对象 new Cat() 注意: 1.每次new对象都会产生新的实例化对象。 2.多个对象可以指向同一块实例化空间。 3.对象必须被实例化之后才能使用。 4.对象间的引用,实际上传递的是堆内存的引用。 构造方法 1、构造方法与类同名,没有返回值。 2、只能在对象实例化的时候调用。 3、没有指定构造方法时,系统会自动添加无参的构造方法。 4、当指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法。 5、一个类中可以有多个构造方法。 单一职责原则 单一职责原则(SRP:single responsibility principle),又称单一功能原则。 面向对象的五个基本原则之一(SOLID:SRP、OCP开放封闭原则、LSP里氏替换原则、DIP依赖倒置原则、ISP接口分离原则)。

61条面向对象设计的经验原则

六眼飞鱼酱① 提交于 2020-02-27 08:32:29
此文,来自网络 “你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。” ----------Arthur J.Riel (1)所有数据都应该隐藏在所在的类的内部。 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。 (3)尽量减少类的协议中的消息。 (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。 (5)不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。 如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。 (6)不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。 (7)类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。 (8)类应该只表示一个关键抽象。 包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响 . (9)把相关的数据和行为集中放置。 设计者应当留意那些通过get之类操作从别的对象中获取数据的对象。这种类型的行为暗示着这条经验原则被违反了。 (10)把不相关的信息放在另一个类中(也即:互不沟通的行为)。 朝着稳定的方向进行依赖.

浅谈面向对象特征

血红的双手。 提交于 2020-02-27 05:53:32
所有的面相对象思想,归根结底是为了简化代码,减少代码量,构建更符合现实生活逻辑的程序代码,从而减轻程序员的负担。不能一味地或者说刻意地去使用面相对象的思想而忽略了程序所实现的功能或者框架,要根据实际情况 众所周知,面向对象编程的特点为:封装、继承、多态。C#是一门完全面向对象的语言,由于比Java推出的时间还要晚,所以对面向对象的思想的体现比Java还要完美,那么在C#中如何体现封装、继承和多态呢?下面举例并进行说明。 1.封装 封装的好处有以下几点: ①数据不外泄,可以做到一定的保护 ②类的使用者不用考虑具体的数据运算,方便 ③程序结构性强,层次清晰,便于维护 对相关的字段、方法进行封装固然对面向对象编程起到不可缺少的重要作用,但并不代表不可以访问类或者说具体的实例化对象中的内容,而且为使用者提供接口,仅仅让他们调用就可以了,他们只做他们的工作,不需要考虑或者顾及你写的类具体是做什么的,更不用考虑你写的每一行代码是什么意思。 在C#中,对于变量的封装,往往将需要被在本类以外调用的,以属性的形式出现,而不像C++中是直接以public成员或者private成员加上相关的方法调用,那样要么不符合面向对象的特点,要么太麻烦。 C#中属性的声明: 代码如下: public class TestClass { public string Info { get; set; } }