概览: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设计原则:
多用组合,少用继承
针对接口编程
针对扩展开发,针对改变关闭


樱桃小丸子
27 声望1 粉丝