面向对象方法

面向对象基础

二次信任 提交于 2020-02-14 23:23:01
面向对象思想: 不是一个实实在在的东西,它就是一种思想,编程思想; 就是把生活中某些个体/东西,把它编写到程序里面,很像结构体; 万物皆对象 面向对象三大特性: 封装,继承,多态 面向对象的好处:结构更加清晰,可维护性更高,程序功能扩展更方便 扩展: 一、封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法 只让可信的类或者对象操作,对不可信的进行信息隐藏。 二、继承 面向对象编程(OOP)语言的一个主要功能就是“继承”。 继承是指这样一种能力:它可以使用现有类的所有功能, 并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些 OOP 语言中,一个子类可以继承多个基类。 但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类

Java学习笔记(八)面向对象---抽象类

此生再无相见时 提交于 2020-02-14 15:29:24
当多个类中出现相同功能,但是功能主体不同时,我们可以向上抽取,只抽取功能定义,而不抽取功能主体。 抽象类的特点 抽象方法一定在抽象类中。 抽象方法和抽象类都必须被abstract关键字修饰。 抽象类不可以用new创建对象,因为调用抽象方法没有意义。 抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,才能建立子类对象调用。(如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。) abstract class Student { abstract void study(); abstract void read(); void sleep() { System.out.println("sleep"); } } class StudentClass1 extends Student { void study() { System.out.println("study Java"); } void read() { System.out.println("read book"); } } class StudentClass2 extends Student { void study() { System.out.println("study python"); } void read() { System.out.println("study magazine"); }

面向对象设计原则之依赖倒转原则

假如想象 提交于 2020-02-14 08:09:01
如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。依赖倒转原则是 Robert C. Martin 在 1996 年为“ C++Reporter ”所写的专栏 Engineering Notebook 的第三篇,后来加入到他在 2002 年出版的经典著作“ Agile Software Development, Principles, Patterns, and Practices ”一书中。依赖倒转原则定义如下: 依赖倒转原则 (Dependency Inversion Principle, DIP) :抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。 依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。 为了确保该原则的应用,一个具体类应当只实现接口或抽象类中声明过的方法,而不要给出多余的方法,否则将无法调用到在子类中增加的新方法。 在引入抽象层后,系统将具有很好的灵活性,在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中,这样一来,如果系统行为发生变化,只需要对抽象层进行扩展,并修改配置文件,而无须修改原有系统的源代码

面向对象基础

喜欢而已 提交于 2020-02-14 00:26:54
面向对象基础 面向过程编程 面向过程又被称为top-down languages。 基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。 面向对象编程 Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。 面向对象的特性 class 类 一个类即是对一类拥有相同属性的对象的抽象、蓝图、原型。在类中定义了这些对象的都具备的属性(variables(data))、共同的方法。 class Student (object):#定义student 类 pass Object 对象 一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像人类是指所有人,每个人是指具体的对象,人与人之前有共性,亦有不同。 stu = Student() #实例化 print (stu) __________________________________

PYTHON基础知识学习笔记(七)

五迷三道 提交于 2020-02-13 22:50:14
目录 面向对象 面向对象技术简介 封装 面向对象 Python从设计之初就已经是一门面向对象的语言,相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法。 步骤如下: 1、OOA面向对象分析:在完成某一个需求前先确定职责——要做的事(方法) ; 2、OOD面向对象设计:根据职责确定不同的对象,在对象内部封装不同的方法(多个) ; 3、OOP面向对象编程:最后完成代码,就是顺序的让不同的对象调用不同的方法 。 例: 面向对象的思想有如下特点: 1、注重对象和职责,不同的对象承担不同的职责 ; 2、更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供的固定套路; 3、需要在面向过程的基础上,再学习一些面向对象的语法。 面向对象技术简介 1、类(Class):用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法,对象是类的实例。 2、对象:通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)以及方法。 3、类变量:类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用。 4、实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。 5、方法:类中定义的函数。 6、实例化:创建一个类的实例,类的具体对象。 封装

面向对象成员变量和局部变量,private--学习笔记--13

爷,独闯天下 提交于 2020-02-13 11:13:04
1.成员变量和局部变量区别 1.在类中位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 举例: Class Demo { //成员变量(方法外) Int num=10; Public void show ( ) { Int num2=20;//局部变量 } } 2.在内存中位置不同 成员变量:在堆内存 局部变量:在栈内存 3.生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法调用完毕而消失 4. 初始化值不同 成员变量:有默认初始化值 局部变量: 没有默认初始化值,必须定义,赋值,然后才能使用 注意事项: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则 class Variable { //int num=10; int num; public void show() { //int num2;//报错,可能尚未初始化。参照定义 int num2=20; System.out.println(num2); } } class VariableDemo{ public static void main(String[] args) { Variable v=new Variable(); System.out.println(v.num);//访问成员变量 v.show(); }

Java面向对象[数组]

时间秒杀一切 提交于 2020-02-13 11:07:11
理解数组 Java的数组要求所有的数组元素具有相同的数据类型,换句话说一个数组里只能存储一种数据类型的数据 一旦数组的的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变,即使把某个数组元素的数据清空,但它所占的空间依然保留,依然属于该数组,数组的长度依然不变 Java的数组既可以存储基本类型的数据,也可以存储引用类型的数据,只要所有的数据属于相同的数据类型即可 数组也是一种数据类型,它本身是一种引用类型,因此用它定义一个变量时,仅仅表示定义了一个引用变量(也就是一个指针),这个引用变量还未指定任何内存 数组的定义和初始化 Java提供了两种定义数组的语法 type[] arrayName; type arrayName[]; 数组是个引用类型,因此用它定义一个变量时,仅仅表示定义了一个引用变量(也就是一个指针),这个时候引用变量还未指定任何内存,因此定义数组时不能指定数组的长度,并且没有指定内存就没有内存空间来存储数组元素,因此这个数组也就不能直接使用,只有对数组进行初始化后才可以使用。 数组初始化 所谓初始化就是给数组分配内存空间,并为数组元素赋初始值,一旦为数组的每个数组元素分配了内存,每个内存空间里存储的内容就是该数组元素的值,即使这个内存空间存储的内容是空,这个空也是一个值(null),只要为数组元素分配了内存空间,数组元素就具有了初始值

面向对象程序设计寒假作业3

无人久伴 提交于 2020-02-13 00:57:09
这个作业属于哪个课程 2020面向对象程序设计张栋班 这个作业要求在哪里 面向对象程序设计寒假作业3 这个作业的目标 继续完成 作业二 的编程题、优化架构,思考代码的拓展性 作业正文 正文 其他参考文献 C语言:函数返回字符串的四种方法 我的 Github作业仓库 思考添加的功能 前两次的作业都完成了对两位数的功能实现,这一次就考虑对负数功能的实现,判断和循环目前是一点思路没有,想着看是否有大佬贡献一下代码来参考参考,因为前两次的主函数都过于复杂,所以这一次考虑着能否把主函数精简一下,代码就重新再打一遍,目标就是添加负数功能以及把主函数拆分成几个函数。在学习python的过程中,也越来越认识到写注释的重要性,特别是面对几百行几十天以前写的代码,没有注释看着就头痛。 首先是添加负数的功能 这里我将前两次作业的代码继续拆分成不同模块,而且现在的函数会在十五行以内完成,还是在这里提一下代码的格式、注释以及适当的空行会使程序更加美观,也更易读懂。 对输出这一简单的功能进行改进,在调用函数时首先调用的是 NumToCNJudge 函数,在这里的功能仅仅是对数字的符号进行判断,然后如果是正数的话会调用 PositiveNumToCN 函数,这个函数差不多是前两次作业直接copy过来的,如果是负数的话,就调用 NegativeNumToCN ,在函数中先输出一个“负”,然后调用

黑马程序员-Java面向对象

拥有回忆 提交于 2020-02-11 11:53:45
1. 什么是面向对象? 将功能封装进对象,强调具备了功能的对象。 特点 : 将复杂的事情简单化, 面向对象将以前的过程中的执行者,变成了指挥者。 2. 类和对象的关系 类是具体事物的抽象,概念上的定义;对象即是该类事物实实在在存在的个体。 Java中用类描述事物就是描述事物的 属性 和 行为 。 成员变量和局部变量的区别? |-- 成员变量 : 定义在类中,整个类中都可以被访问; 随着对象的建立而建立,存在于对象所在的堆内存中; 有默认初始化值。 |-- 局部变量 : 只定义在局部范围内; 存在于栈内存中,作用的范围结束,变量空间会自动释放; 局部变量没有默认初始化值。 匿名对象 :当对对象方法仅进行一次调用时;匿名对象可以作为实际参数进行传递。 3. 面向对象的特征 |--封装: 隐藏对象的属性和实现细节,仅对外提供公共访问方式。 好处 :将变化隔离;便于使用;提高重用性;提高安全性。 构造函数 特点 :函数名与类名相同 不用定义返回值类型 不可以写return语句 作用 : 给对象初始化 |--继承:共性抽取。多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,提高代码复用性。 好处:提高了代码的复用性;让类与类之间产生了关系,多态的前提。 特点:Java只支持单继承,但是支持多层继承(继承体系) |--抽象类 特点 :1. 抽象方法只能定义在抽象类中

Java面向对象---继承

£可爱£侵袭症+ 提交于 2020-02-11 10:54:58
继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 生活中的继承: 兔子和羊属于食草动物类,狮子和豹属于食肉动物类。 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。 类的继承格式 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: 类的继承格式 class 父类 { } class 子类 extends 父类 { } 继承的特性 子类拥有父类非private的属性,方法。 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。 继承关键字 继承可以使用 extends 和