概览:OOP
类,对象,抽象类,接口
特性:封装,继承,多态
类:现实中的类型,笼统的概念
相同属性和方法的对象的集合
对象:特定个体,具体的东西,万物皆对象
属性—-对象的各种特征
方法—-对象执行的操作
类是对象的抽象,即模版,对象是类的具体
类的定义
public class People {
定义属性
pubic String name
定义方法
pubic void eat(参数)
}
对象的使用
类名 对象名=new 类名()
对象名.属性
对象名.方法()
基本数据类型,传递值
引用数据类型,传递引用,地址
构造方法:
方法名称和类名是一样的,无返回类型,分带参和无参,
无参构造方法不需要写,系统默认有
一个类里面可以用多个带参方法
this:对一个对象的默认引用
方法重载:
同一个类,方法名相同,参数个数和类型不同,不要看返回值
成员变量:类里面声明的变量,或者叫全局变量,可以不赋初始值,系统默认会给
局部变量:方法里面声明的变量,必须要赋初始值
同一个类中,局部变量和成员变量可以同名,有限局部变量
封装:把尽可能多的东西藏起来,对外提供便捷的接口
属性私有 private
添加对应的setter和getter
对属性合法值进行判断
包:类组成的小单元,文件夹,区分相同名字的类,还有访问控制的作用
package先,import后
访问权限控制:private,public,protect
类和类成员可以用
类
默认修饰符—-只有本包里面的类可以访问
pubic—-所有的包都可以访问
类成员的访问
private—-其他的类,子类不可以访问,只有本类可以访问
pubic—-都可以访问,包括子类
protect—-本类,子类,同包可以访问,其他不可
static:静态,可以直接类名来访问,不需要实例化
static 成员方法——静态方法
类名直接调用,不需要实例化再使用
不能使用this,实例变量,实例方法
main方法是最典型的静态方法
static 静态变量,内存中只有一个拷贝,任何地方都可以直接类名访问,被类的所有实例共享,可以作为实例间的共享数据
继承
is-a的关系的设计使用继承
将子类共同的属性和行为放到父类
java是单继承
关键字extends
提高代码的重用性
方法重写:
子类根据需求重写父类的方法
重写时,可以用super.方式来
重写的方法与父类必须同名
标记:override
super关键字
代表父类对象
只能出现在子类的方法和构造方法
可以调用父类的非private属性,方法,构造方法
可以用来调用父类的成员变量
继承机制下的构造方法:
控制台输出
断电跟踪
这些都有利于继承,super的使用
Object类:
所有类的直接或者间接父类
即可以继承Object的属性和方法
引用变量和
多态:
同一个引用类型,使用不同的实例而执行不同操作
使用父类作为方法的形参,是最主要的多态方式
动态绑定:实例方法与实际的引用对象绑定,调用重写后的方法
静态绑定:静态方法与声明的类型绑定
抽象类:关键字 abstract。is-a
包含抽象方法,就一定是抽象类
不能被实例化
抽象类里面可以有普通方法
可完成部分功能的实现
抽象方法:关键字 abstract
抽象方法没有方法体
抽象方法必须在抽象类里面
必须在子类中被实现,除非子类是抽象类
向上转型
父类 变量 = new 子类
接口:interface。has-a
弥补单根继承的缺点,抽象类型
概念性的接口
类实现接口用implements
类可以实现多个接口
jdk8前后有差别
定义了标准和规范
经常与多态结合使用
定义了一般不修改
抽象类与接口的区别:
相同:
代表抽象层
都不能被实例化
都包含抽象方法
不同:
抽象类利于复用,接口类利于维护
一个类只能继承一个父类,但可以实现多个接口
共同的属性和行为提出到抽象类,子类继承
个体的特性或者新增提出到接口,子类实现
提高维护性和可扩展性
oop设计原则:
多用组合,少用继承
针对接口编程
针对扩展开发,针对改变关闭
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。