多态

Java 多态

情到浓时终转凉″ 提交于 2019-12-01 07:15:31
多态:一个对象有多种形态 是方法的多态,和属性无关 有继承关系、 重写方法 、父类引用 指向 子类对象 静态方法不支持多态 举例, 有父类Dog,属性name="dog",普通方法say,静态方法move; 子类SDog,属性name="sdog",重写了普通方法say,重写了静态方法move,另外有自己的普通方法sd; 子类BDog,属性name="bdog",重写了普通方法say,重写了静态方法move,另外有自己的方法bd; 孙类SDog_son继承了SDog,属性name="sdog_son",重写了普通方法say,重写了静态方法move; 测试代码: package my_test; public class Main { public static void main(String[] args) { Dog d1;//d1是一个引用 d1=new Dog();//d1 指向父类Dog创建的对象 d1.say(); d1.move(); System.out.println(d1.name); System.out.println("------------------------------------------"); d1=new SDog();//d1 指向子类SDog创建的对象,上面失去引用的对象会被回收 d1.say(); d1.move(); System

组合和多态(继承父类,抽象类,鸭子类型)

时光总嘲笑我的痴心妄想 提交于 2019-12-01 07:10:02
目录 组合 1.什么是组合 2. 为何要用组合 3.组合使用场景 4 .组合使用示例 多态 1.多态的定义: 2.多态的目的: 3.如何实现多态 1.继承父类 2.抽象类 3.鸭子类型(不推荐强制遵循父类的标准) 4.实现多态的三种方式的优缺点 组合 1.什么是组合 ​ 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象 class Foo: pass class Bar: pass obj=Foo() obj.attr=Bar() obj.xxx obj.attr.yyy 2. 为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式,可以间接地将两个类关联/整合/组合到一起,从而减少类与类之间代码冗余 class Foo1: pass class Foo2: pass class Foo3: pass class Bar: pass obj_from_bar=Bar() obj1=Foo1() obj2=Foo2() obj3=Foo3() obj1.attr1=obj_from_bar obj2.attr2=obj_from_bar obj3.attr3=obj_from_bar 3.组合使用场景 组合与继承都是有效地利用已有类的资源的重要方式。但是二者的概念和使用场景皆不同, 1.继承的方式 通过继承建立了派生类与基类之间的关系,它是一种'是

组合封装知识点

雨燕双飞 提交于 2019-12-01 05:27:48
组合 定义: 组合指的是,一个对象中的属性是另一个对象 目的: 和继承一样,都是为了减少代码的冗余度 总结: 继承: 类与类的关系,一种是什么与什么的关系,子类和父类是从属关系 组合: 对象与对象的关心,一种什么有什么的关系,一个对象拥有另一个对象 封装 定义: 封装指的是把一堆属性(特征与技能)封装到一个对象中。 存数据的目的是为了取,对象可以“,”的方式获取属性 比喻: 对象就好比一个袋子,袋子里面装一堆属性 目的: 为了方便存取,可以通过 对象.属性的方式获取 如何封装: 特征:变量--->数据属性 技能:函数--->方法属性 在类内部,定义一堆属性(特征与技能),通过 对象.属性 = 属性值 访问限制机制 定义: 在类内部定义,凡是以 __ 开头的数据属性与方法属性,都会被Python内部隐藏起来,让外部不能直接访问类内部以 __ 开头的属性 比如: __name = ‘tank’ ​ def __student(self): ​ pass 目的: 一堆隐私的属性与不能被外部轻易访问的属性,可以隐藏起来,不被外部调用 优势:对重要数据获取的逻辑更加严谨,进而保证了数据的安全 接口: 隐私属性可以通过封装一个接口,在接口内做业务逻辑的处理,再把数据返回给调用者 注意:在Python中,不UI强制限制苏醒的访问,类内部__ 开头的属性,只是做了一种变形 若想直接访问

第二十一天:组合,多态,封装.....

与世无争的帅哥 提交于 2019-12-01 05:09:15
目录 组合 什么是组合 组合的作用 如何使用组合 封装 什么是封装 为什么封装 如何封装 访问限制机制 什么是访问限制机制 访问限制机制的目的 property 什么是property 为什么要用property 如何使用property 多态 什么是多态 多态的目的 如何实现 抽象类 什么是抽象类 目的 如何使用 鸭子类型 什么是鸭子类型 多态炫技 组合 什么是组合 组合指的是一个对象中的属性,该属性的值指向的是另一个对象。 组合的作用 组合的目的和继承一样,为了减少代码冗余 如何使用组合 class People: def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex class Teacher(People): def __init__(self,name,age,sex): super().__init__(name,age,sex) class Student(People): def __init__(self,name,age,sex): super().__init__(name,age,sex) class Date: def __init__(self,year,month,day): self.year=year self.month=month self.day

组合、封装、多态

余生颓废 提交于 2019-12-01 05:05:14
目录 组合 1、什么是组合 2、作用: 3、如何使用 总结: 封装 1、什么是封装 2、为什么要封装 3、如何封装 封装是面向对象编程的精髓 访问限制机制: 1、什么是访问限制机制 2、访问限制机制的目的 property: 1、什么是property 2、为什么要使用property 3、如何使用property 多态: 1、什么是多态 2、多态的作用 3、如何实现 抽象类: 1、什么是抽象类 2、使用的目的? 3、如何使用 鸭子类型: 1、什么是鸭子类型 组合 1、什么是组合 ​ 组合指的是一个对象中的属性是另一个对象 2、作用: ​ 减少代码冗余 3、如何使用 class People: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex class Teacher(People): def __init__(self, name, age, sex): super().__init__(name, age, sex) class Student(People): def __init__(self, name, age, sex): super().__init__(name, age, sex) # 日期类 class Date: def __init__

从组合到鸭子模块

狂风中的少年 提交于 2019-12-01 05:04:48
组合: 什么是组合 ​ 组合指的是一个对象中的属性,是另一个对象. 为什么要使用组合 组合目的和继承一样, 为了减少代码冗余. 封装: 什么是封装? 封装指的是把一堆属性(特征与技能)封装到一个对象中. 存数据的目的是为了取, 对象可以"."的方式获取属性. 为什么要封装? 封装的目的为了方便存取,可以通过对象.属性的方式获取属性. 访问限制机制: 什么是访问限制机制? 在类内部定义, 凡是以__开头的数据属性与方法属性,都会被python内部隐藏起来,让外部不能"直接"访问类内部的__开头的属性. 访问限制机制的目的? 一堆隐私的属性与不能被外部轻易访问的属性, 可以隐藏起来,不被外部直接调用. property: 什么是property python内置的装饰器, 主要是给类内部的方法使用. 为什么要用property 在对象调用某个方法时,将对象.方法()变成对象.方法(看起来想一个普通的数据属性) obj.bmi() == obj.bmi 如何使用property @property def 类内部的方法(self): 多态: 什么是多态? 多态指的是同一种事物的多种形态. 多态的目的: 多态的目的是为了, 让多种不同类型的对象, 在使用相同功能的情况下,调用同一个名字的方法名. 父类: 定义一套统一的标准. 子类: 遵循父类统一的标准. 如何实现: 继承父类 继承抽象类

组合,封装,多态

北慕城南 提交于 2019-12-01 05:04:25
目录 组合 什么是组合 为什么要使用组合 如何使用组合 组合练习 封装 什么是封装 为什么要封装 如何封装 访问限制机制 什么是访问限制机制 访问限制机制的目的 property 什么是property 为什么要用property 如何使用property 多态 什么是多态 多态的目的 如何实现: 抽象类 鸭子类型 多态炫技操作 组合 什么是组合 组合指的是一个对象中的属性,是另一个对象 为什么要使用组合 减少代码冗余 如何使用组合 继承实现: # 选课系统:老师类,学生类,老师与学生都有名字、年龄、性别 class People: def __init__(self, name, age, sex, year, month, day): self.name = name self.age = age self.sex = sex self.year = year self.month = month self.day = day def tell_birth(self): print(f''' === 出生年月日 === 年: {self.year} 月: {self.month} 日: {self.day} ''') class Teacher(People): def __init__(self, name, age, sex, year, month, day):

1011 笔记

与世无争的帅哥 提交于 2019-12-01 05:03:39
目录 组合 1.什么是组合 2.为什么要使用组合 3.如何使用组合 总结 封装 1.什么是封装 2.为什么要封装 3.如何封装 访问限制机制 1.什么是访问限制机制 2.访问限制的目的 接口 property 1.什么是property 2.为什么要用property 3.如何使用property 多态 1.什么是多态 2.多态的目的 3.如何实现 继承 抽象类abc 鸭子类型 1.什么是鸭子类型 组合 1.什么是组合 在一个类中以另外一个类的对象作为数据属性,称为类的组合。 继承是一个子类是一个父类的关系,而组合则是一个类有另一个类的关系。 组合就是一个类中使用到另一个类,从而把几个类拼到一起。组合的功能也是为了减少重复代码。 2.为什么要使用组合 组合的目的和继承一样,为了减少代码冗余 3.如何使用组合 # 定义父类 class people: def __init__(self,name,age): self.name = name self.age =age # 定义学生类 class teach(people): def __init__(self,name,age): super().__init__(name,age) # 定义老师类 class student(people): def __init__(self,name,age): super().__init_

day 21 组合 多态

◇◆丶佛笑我妖孽 提交于 2019-12-01 05:01:55
组合 什么是组合 ​ 组合指的是一个对象中的属性,该属性的值指向的是另一个对象。 组合的作用 ​ 组合的目的和继承一样,为了减少代码冗余 如何使用组合 class People: def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex class Teacher(People): def __init__(self,name,age,sex): super().__init__(name,age,sex) class Student(People): def __init__(self,name,age,sex): super().__init__(name,age,sex) class Date: def __init__(self,year,month,day): self.year=year self.month=month self.day=day def tell_birth(self): print(f''' ===出生年月日=== 年:{self.year} 月:{self.month} 日:{self.day}''') tea1=Teacher('tank',17,'male') date_obj=Date(2002,1,1) tea1.date=date_obj

组合,封装与多态

北城以北 提交于 2019-12-01 04:58:41
组合: 1.什么是组合? 组合指的是一个对象中的属性,是另一个对象. 2.为什么要使用组合? 组合目的和继承一样, 为了减少代码冗余. 3.如何使用组合: 封装(夺命三问): 1.什么是封装? 比喻: 封: 比如把一个袋子封起来. 装: 比如把一堆小猫,小狗,nick装到袋子里. 封装指的是把一堆属性(特征与技能)封装到一个对象中. 存数据的目的是为了取, 对象可以"."的方式获取属性. 比喻: 对象就好比一个袋子, 袋子里面装一堆属性. 2.为什么要封装? 封装的目的为了方便存取,可以通过对象.属性的方式获取属性. 3.如何封装 特征: 变量 ---> 数据属性 技能: 函数 ---> 方法属性 在类内部,定义一堆属性(特征与技能). 通过 对象.属性 = 属性值 访问限制机制: 1.什么是访问限制机制? 在类内部定义, 凡是以__开头的数据属性与方法属性, 都会被python内部隐藏起来,让外部不能"直接"访问类内部的__开头的属性. 比如: __name = 'tank' 2.访问限制机制的目的? 一堆隐私的属性与不能被外部轻易访问的属性, 可以隐藏起来,不被外部直接调用. 好处: 对重要数据获取的逻辑更加严谨, 进而保证了数据的安全. 接口: 隐私属性可以通过封装一个接口,在接口内做业务逻辑的处理,再把数据返回给调用者. 注意: 在python中,不会强制限制属性的访问