面向对象--OO--object-oriented
如何把大象装冰箱?
面向过程:打开冰箱门---把大象装进去---关上冰箱门
面向对象:
1.大象:进入冰箱、离开冰箱
2.冰箱:开门、关门
3.人:检测1、检测2
面向对象三大特性:封装、继承、多态
封装:数据安全;内部修改保持稳定;提供重用性;分工合作,职责分明;方便构建大型复杂的系统。
继承:去掉重复代码;可以实现多态;侵入性很强的类关系。
多态:相同的变量、相同的操作,但是不同的实现
方法的重载 接口&实现 抽象类&实现 继承
第4特性:抽象
抽象方法必须放在抽象类中(抽象类中可以有普通属性方法),不必写方法体,在子类中必须用override重写。
接口:没有任何具体实现,成员不能写访问修饰符,默认public,包含方法、属性、事件、索引器。
抽象类和接口自身都不能实例化,可以声明然后用实现类(子类)构造。
如何选择接口和抽象类
接口:纯粹的约束;多继承更灵活;表示can do(能做什么);
抽象类:父类+约束;单继承;表示 is a(是什么);
子类都一样的放在父类;子类都有但不一样,抽象一下;子类有的有、有的没有,用接口。
接口用的更多,因为接口更简单灵活,除非有些共有的需要继承。
虚方法
public virtual void vMethod() { }
People p = new Child();
p.vMethod(); //只有当子类中使用override关键字重写该虚方法时,才会调用子类的方法
密封
使用sealed+override关键字,可以使子类的子类不能再重写父类的虚方法或抽象方法。
构造函数
子类的构造函数被调用时,会默认先调用父类的构造函数
如果父类的构造函数被重载了,在子类中必须显示调用父类的构造函数


面向对象--OO--object-oriented的更多相关文章
- Python学习札记(三十) 面向对象编程 Object Oriented Program 1
参考:OOP NOTE 1.面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. ...
- python, 面向对象编程Object Oriented Programming(OOP)
把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数 ...
- Python学习札记(四十) 面向对象编程 Object Oriented Program 11
参考:使用元类 NOTE: type() 1.type()函数可以用于检查一个类或者变量的类型. #!/usr/bin/env python3 class Myclass(object): " ...
- Python学习札记(三十八) 面向对象编程 Object Oriented Program 9
参考:多重继承 NOTE #!/usr/bin/env python3 class Animal(object): def __init__(self, name): self.name = name ...
- Python学习札记(三十七) 面向对象编程 Object Oriented Program 8 @property
参考:@property NOTE 1.在绑定参数时,为了避免对属性不符合逻辑的操作,需要对传入的参数进行审核. #!/usr/bin/env python3 class MyClass(object ...
- Python学习札记(三十六) 面向对象编程 Object Oriented Program 7 __slots__
参考:slots NOTE 1.动态语言灵活绑定属性及方法. #!/usr/bin/env python3 class MyClass(object): def __init__(self): pas ...
- Python学习札记(三十五) 面向对象编程 Object Oriented Program 6
参考:实例属性和类属性 NOTE Python是动态语言,根据类创建的实例可以任意绑定属性. class Student(object): def __init__(self, name): self ...
- Python学习札记(三十四) 面向对象编程 Object Oriented Program 5
参考:获取对象信息 NOTE 1.type()函数可以用来判断对象的类型: >>> type(123) <class 'int'> >>> type(' ...
- Python学习札记(三十三) 面向对象编程 Object Oriented Program 4
参考:继承和多态 NOTE 著名的开闭原则: 对扩展开放:允许新增Animal子类: 对修改封闭:不需要修改依赖Animal类型的Animal_func()等函数. 1.eg. #!/usr/bin/ ...
- Python学习札记(三十二) 面向对象编程 Object Oriented Program 3
参考:访问限制 NOTE 1.eg. #!/usr/bin/env python3 class Student(object): """docstring for Stu ...
随机推荐
- "const char *" 类型的值不能用于初始化 "char *" 类型的实体
用vs2019发现会出现这样的问题 最后发现只要设置一下就解决了,解决方案如下: 右击该项目,选择属性->c/c++->语言->将符合模式改为否就行了... 设置之后程序没有再报错, ...
- vs2010安装
1.网盘上2010安装包可用,先下载到电脑上,然后找到setup文件,安装即可 2.下载插件,基本的文本对齐,tab键补齐等功能 3.测试hello world程序 4.出现的问题 一个文件夹下有多个 ...
- [LOJ113] 最大异或和 - 线性基
虽然是SB模板但还真是第一次手工(然而居然又被运算符优先级调戏了) #include <bits/stdc++.h> using namespace std; #define int lo ...
- JAVA 注解教程(五)注解的提取
注解与反射 注解通过反射获取.首先可以通过 Class 对象的 isAnnotationPresent() 方法判断它是否应用了某个注解 public boolean isAnnotationPres ...
- 软件工程 实验一 Git版本管理
实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git status指 ...
- 通过Spring Resource接口获取资源
目录 1 Resource简介 2 通过ResourceLoader获取资源 3 在bean中获取Resource的方式 1 Resource简介 在S ...
- win 下 docker 环境配置
声明 此文只针对 win7.win10 家庭版等用户操作系统,因为这些系统无法使用 windows 的 Hyper-V 虚拟技术.只能借助于 Virtual Box 虚拟机来使用 docker. Do ...
- 图的最短路径算法Dijkstra算法模板
Dijkstra算法:伪代码 //G为图,一般设为全局变量,数组d[u]为原点到达个点的额最短路径, s为起点 Dijkstra(G, d[u], s){ 初始化: for (循环n次){ u = 是 ...
- 题解【洛谷P1038/CJOJ1707】[NOIP2003提高组]神经网络
[NOIP2003]神经网络 Description 问题背景:人工神经网络( Artificial Neural Network )是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款 ...
- CentOS 7 如何设置为eth0网卡
参考文章https://www.linuxidc.com/Linux/2017-06/144973.htm 主要方法 1) 安装的时候,在内核选项中加上net.ifnames=0 biosdevnam ...