面向对象方法

Java面向对象三大特征

一曲冷凌霜 提交于 2020-04-04 17:52:22
封装 封装的好处 1、封装之后,复杂的事物被“包起来”了。复杂性封装,对外提供简单的操作入口。比如照相机,照相机内部结构、实现原理都很复杂,然而对于使用者就很简单。 2、封装之后才会形成真正的“对象”,真正的“独立体”。 3、封装意味着以后的程序可以重复使用,并且这个事物应该适应性比较强,在任何场合都适用。 4、封装之后,对于事物本身,提高了安全性【安全级别高】。 封装的步骤 1、所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。(例子:private int age,age属性私有化,在外部程序不能直接访问) 2、对外提供简单的操作入口,也就是说以后外部程序要想访问age属性,必须通过这些简单的入口进行访问。(属性的访问形式:读取属性的值(get);修改属性的值(set)。) 3、对外提供两个公开的方法,分别是set方法和get方法:想修改属性,调用set方法;想读取属性,调用get方法。 4、set方法的命名规范: public void set+属性名首字母大写(形参){ 安全控制; Java代码; } 例子: public void setAge(int a){ if(a<0 || a>150){ return; } age = a; } get方法的命名规范: public 参数类型 get+属性名首字母大写(){

多态

痞子三分冷 提交于 2020-04-02 05:51:35
——“面向对象的三大特性是什么?” ——“封装、继承、多态。” 这大概是最容易回答的面试题了。但是,封装、继承、多态到底是什么?它们在面向对象中起到了什么样的作用呢? 多态 多态(Polymorphic)其实也是一个顾名思义的词:“多态”就是一种事物的“多”种形“态”。 “多态”这个概念在面向对象中同样有多种形态:类的多态、方法的多态、以及实例的多态。 类的多态 类的多态最常见、也最好理解。子类继承了父类(包括实现某个接口)后,父类就有了多种形态:它既可以是父类本身,也可以是它的子类A,还可以是它的子类B、甚至可以是子类A的子类A1……在《 继承 》一文中,这种多态的例子比比皆是,这里就不赘述了。 方法的多态 绝大多数情况下,子类继承了父类之后都会重写父类的方法实现。这时,同一个方法就有了多种不同的实现,这就是一种方法的多态。当然,除了重写之外,还有一种方法的多态叫做“重载”,即通过修改方法的参数列表(参数类型、参数个数等)来为同一个方法提供多种实现。 不过我个人不太喜欢重载,也不太愿意把归入多态之中。Java以方法名+参数列表作为一个方法的“签名”,而重载修改了参数列表,也就修改了方法签名。这时,重载后的这些方法还能称为“同一个方法”的不同实现吗?此外,Java会在编译期就确定使用哪个重载方法,但只有到了运行时才能知道使用的是哪个类重写的方法。也就是说,重载并不具备多态所应有的

c++为什么要面向对象?

夙愿已清 提交于 2020-04-01 07:58:13
前言   c和c++的区别是什么?不可置否,最重要的就是c++的编程思想是面向对象,而c的编程思想是面向过程,这是它们的本质区别,如果你在使用c++编程时使用的还是面向过程的编程思想,那么还不如使用c,因为这样的做法已经丢掉了c++的思想精髓。在学习一门语言时,最重要的是学习它的设计思想,因为语法都是大同小异的,很快便可以掌握。那么面向过程和面向对象编程的发展历史如何,区别是什么,各自的优缺点是什么,且听我一一道来。    一、“自顶向下,逐步求精”的面向过程程序设计    面向过程程序设计的思想即这样的一种解决思路 - 提出问题,分析问题的处理流程,将大问题分解为小问题,如果小问题比较复杂,就继续划分小问题为更小的问题,然后通过小模块一一解决小问题,最后再根据整个业务流程将这些小问题串在一起(调用函数),这样就达到了解决所有问题的目的,如下:   于是,这样从问题出发,自顶向下、逐步求精的开发思想我们称之为“面向过程程序设计思想”,因为它主要是解决问题中的一个个过程。这种思想也是最早的编程语言的思想,因为它比较符合我们解决问题的方法,其他语言比如早期的Fortran、JavaScript等都是如此。它的优点如下: 优点1:程序结构简单 - 仅由三种基本结构组成   面向过程编程的思想在程序实现上只需要三种控制结构,即顺序、选择、循环。通过这三种基本结构,我们就可以解决任何问题

Python-Day6 面向对象

穿精又带淫゛_ 提交于 2020-04-01 07:57:09
一、面向过程 VS 面向对象 编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 ,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式,对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式。两种最重要的编程范式分别是面向过程编程和面向对象编程。 面向过程编程(Procedural Programming) Procedural programming uses a list of instructions to tell the computer what to do step-by-step. 根据业务逻辑从上到下写垒代码。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。 这样做的问题也是显而易见的,就是如果你要对程序进行修改,对你修改的那部分有依赖的各个部分你都也要跟着修改, 举个例子,如果程序开头你设置了一个变量值为1,但如果其它子过程依赖这个值为1的变量才能正常运行,那如果你改了这个变量

java 面向对象——进度1

孤人 提交于 2020-03-31 06:46:50
面向对象: 1,面向对象和面向过程思想。 面向对象强调的是对象实例。 面向过程强调的是动作。 对象将动作进行封装。 在问题领域中,我们先去找的都是涉及的对象, 然后分析对象的属性和行为。 2,面向对象的特点。 1,是一种常见思想。 2,复杂变简单。 3,执行者变指挥者。 举例:面试的例子。 3,类与对象的关系。 类:就是对事物的描述,其实类就是将对象共性的内容进行抽取。 对象:就是该类事物实实在在存在个体,在java中通过new来完成创建的, 堆内存的对象主要用于封装对象中的特有数据。 4,类中的成员: 成员变量:事物的属性, 成员函数:事物的行为。 成员变量和局部变量的区别? 答: 如何使用成员,只要建立该类对象,并通过 "对象.对象成员" 就可以完成调用 5,封装。 隐藏实现细节,并对外提供公共的访问方式。 函数或者类都是一个封装体。 特点: 1,隔离的变量。 2,便于使用。 3,提高复用。 4,提高安全性。 举例:机箱的例子 体现之一:私有。 私有在源代码中的使用就是在本类中有效。 通常会将成员变量xxx私有化,并对外提供对应的setXxx getXxx方法对其进行访问。 其实目的就是成员变量访问进行控制。 让成员的访问具备可控性,提高了程序的健壮性。 私有仅仅是封装的体现形式之一而已。 自定义一个Person类。动手。 6,构造函数。 写法特点: 1,函数名和类名相同。 2

python--初识面向对象

≡放荡痞女 提交于 2020-03-30 21:33:12
一 . 初识面向对象 面向过程:   一切以事务的发展流程为中心. 面向对象:   一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方:   大象进冰箱     步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门     面向对象:大象, 你进冰箱.       此时主语是大象. 我操纵的是大象. 此时的大象就是对象 二 . 类.对象 类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.   对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象   类与对象的关系:     类是对xxx事物的归类.       写:         __init__(self, 参数) 参数一般作为属性设置给对象. 对象就是self, 对属性的封装.         def 方法(self, 参数): 方法. 第一个参数一般是固定的self. 当前类的对象.           pass     对象是xx类型的一个具体       创建对象: 类名() 创建类:     class 类名:       def __init__(self): # 初始化方法. 又被成为构造方法         self.属性 = 值         self.属性 = 值         self.属性 = 值       def fangfa(self):   

Python--初识面向对象

↘锁芯ラ 提交于 2020-03-30 21:24:08
1.初识面向对象class Person: #定义一个人类 role = 'person' #人的角色属性都是人 def __init__(self,name): self.name = name # 每一个角色都有自己的昵称; def walk(self): #人都可以走路,也就是有一个走路方法 print("person is walking...")print(Person.role) #查看人的role属性print(Person.walk) #引用人的走路方法,注意,这里不是在调用实例化的过程就是类——>对象的过程语法:对象名 = 类名(参数)2.创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性而类有两种属性:静态属性和动态属性静态属性就是直接在类中定义的变量动态属性就是定义在类中的方法创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性3.面向对象的三大特性:继承,多态,封装Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先封装:封装属性方法抽象类,接口类. 抽象类就是一种规范. from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): # 抽象类 接口类 规范和约束

20.面向对象-----多态性

痴心易碎 提交于 2020-03-29 15:44:46
一、多态性的理解   一个事物的多种形态。 二、对象的多态性   父类的引用指向子类的对象。 例如: Person p = new Man();//Man是Person的子类 Object obj = new Date(); 说明:    Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简称:编译时,看左边;运行时,看右边。如果编译时的类型和运行时的类型不一致,就出现了对象的多态性。 举例: public class test { public static void main(String[] args) { Animal animal = new Cat(); //实际执行的是子类重写后的eat() animal.eat(); } } class Animal{ String name; int age; public void eat(){ System.out.println("动物进食"); } } class Cat extends Animal{ public void eat(){ String ability; System.out.println("猫类进食"); } } 三、虚拟方法调用   子类继承父类以后,对父类中的方法进行类重写。实例化父类的引用执行子类的对象(多态性)

18.面向对象-----super关键字

二次信任 提交于 2020-03-29 02:29:06
一、理解 Java中的super关键字可以理解为:父类的 二、可以调用的结构 属性、方法、构造器 三、super调用属性、方法 1.我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super." 2.特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的使用"super.属性"的方式,表明调用的是父类中声明的属性。 3.特殊情况:当子类重写了父类中的方法以后,我们想在子类的方法中调用父类中被重写的方法时,则必须显式的使用"super.方法"的方式,表明调用的是父类中被重写的方法。 public class test { public static void main(String[] args) { Student s = new Student(); s.eat(); } } class Person{ String name; int age; public void eat(){ System.out.println("人吃饭"); } } class Student extends Person{ String school; public void eat(){ name = "xiaowang"; System.out

22. 面向对象-初始

空扰寡人 提交于 2020-03-28 17:44:18
一、面向对象书写 class Car: # self表示当前类对象,当前你创建的是谁,谁来访问这个方法,self就是谁 def __init__(self, color, displacement, number): self.color = color self.displacement = displacement self.number = number def run(self, speed): print(f"这辆车可以跑{speed}迈") #实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征 car = Car("red", "1.8T", "京A88888") car.run(100) 1. __new__(cls, *args, **kwargs) __new__ 负责对象的创建而 __init__ 负责对象的初始化;至少需要传递一个参数cls,必须要有返回值,返回实例化出来的实例。可以return父类通过super(当前类名,cls).__new__出来的实例,或者直接是object的__new__出来的实例。 2. __init__() - 构造方法 __init__()在__new()的基础上完成初始化动作,不需要返回值;有一个参数self,该self参数就是__new__()返回的实例; 3. 实例