基本介绍
1. 面向(对象、过程、接口、函数)
a. 过程
i. 按步骤去考虑事务发展
b. 对象
i. 先考虑事务中有哪些对象
ii. 再建立对象与对象的关系
2. 对象:真实存在的事物
a. 静态:属性(/变量/成员变量/实例变量)
b. 动态:方法(/函数/成员方法/实例方法)
c. 例:人
i. 属性:年龄、性别、姓名…
ii. 方法:吃饭、睡觉、学习…
3. 类:多个对象抽取其共同点形成的概念
a. 现实中:先有对象后有类
b. 程序中:先有类后有对象
4. 对象和类的关系
a. 类是抽取事务共同点,对对象高度抽象形成的概念
b. 对象是类的具体表现,是实例化的产物
5. Java中如何定义一个类
a. 定义
b. 访问权限修饰符 默认为 default
c. 创建对象的类就是该对象的数据类型在堆中开辟一块空间,并存储其属性和方法
变量(实例、局部)
1. 实例变量:
a. 在方法以外类以内 声明的非静态的成员变量
b. 可以在该类中非静态方法中使用
c. 在该类中不能有两个名称相同的成员变量
d. 静态方法中可以通过对象调用
e. 有默认值,基本数据类型默认:int:0、double:0.0、boolean:false,引用数据类型:null
f. 对象调用、类不能调用
2. 局部变量:
a. 方法内声明的变量
b. 生命周期:声明该变量到变量所在代码块结束
c. 在该方法中不能有两个名称相同的局部变量
d. 无默认值
3. 当局部变量与成员变量名称相同时,优先使用局部变量
4. 实例方法
a. 在类中声明的非静态方法
b. 在静态方法中,不能直接调用非静态变量,可以通过对象调用
5. 扩展
a. 类可以调用静态的方法、变量
b. static修饰的方法中,可以直接使用static修饰的成员。若使用非static修饰的成员必须先在该方法中创建该类对象,再通过对象调用。
c. 非static修饰的方法中,可以使用任意成员。
6. 注意:分不清的时候,直接用对象调用
7. 聚合(类中可以使用另一个类当属性)
构造器
1. 一个类中必有一个无参方法
2. 无参中有this时,映射的是类中的属性
c. this关键字只能在非静态方法中使用
d. this调用无参构造方法:this()
3. 有参中则是传递的形参。
4. 当使用有参时,无参必须显示定义(看个人习惯)
7. 构造方法
a. 作用:创建该类对象
b. 写法:访问权限修饰符 类名 (形参列表 )
c. 初始化类的对象
8. 内存浅析
oop(面向对象编程)
1. 封装:
a. 思想:将一件事物进行包装,提供对外使用的方法
b. 好处:
i. 保护内部
ii. 方便使用
iii. 解耦合
iv. 提高安全性
c. 缺点:增加代码量
d. Boolean的getter方法是 :isxxx。其他的是getxxx
e. 方法和属性的区别(getter、setter对于属性的封装):
i. 方法可以过滤脏数据属性不可以
2. 继承
a. 思想:子类继承父类的属性和方法,子类可以重写(扩展)父类方法
b. 继承关键字
i. Extends
ii. 使用:
1) 访问权限修饰符 子类 extends 父类{
}
c. 继承特点
i. 子类拥有父类所有属性与方法(静态、私有除外)
ii. 子类只能拥有一个直接父类
d. 不可继承(不可使用更有意思)
i. 构造器
ii. 使用private修饰的方法或属性
iii. 在不同包中不可使用默认权限修饰符修饰的方法或属性不能直接使用
e. 重写与重载(活用)
i. Override
1) 在继承关系中,子类方法与父类方法:访问权限修饰符(比父类)只能变大或不变,不能缩小。
返回值类型、方法名、形参列表形同
ii. Overload
1) 在同一个类中:方法名相同、形参列表不同
f. Super 与this
i. Super
1) 调用父类构造器
2) 调用父类方法
ii. This
1) 调用本类的构造器、方法、属性
2) 区分成员变量和局部变量
g. 访问权限修饰符
i. Public :可以修饰类
ii. Protected
iii. Default:可以修饰类
iv. Private
h. 继承后对象创建过程
i. 在构造器之前应为加载方法和属性
j. Object
1). 所有类的父类
2). 如果没有明确指明继承的类,默认继承object
k. 继承的好处:提高代码复用率
缺点:多了一个父类,增加代码量
3. 多态
a. 一个事务的多种展现形态
1). instanceof:判断类型
b. 优点:提高可扩展性、接口性
c. 多态的条件:继承、重写父类方法、动态绑定
1). 父类引用指向子类对象:动态绑定(父类对象最后表现为子类的形式)
2). 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
e. 虚函数
虚函数的存在是为了多态。
Java 中其实没有虚函数的概念,它的普通函数就相当于 C++ 的虚函数,动态绑定是Java的默认行为。如果 Java 中不希望某个函数具有虚函数特性,可以加上 final 关键字变成非虚函数。
f. 实现方式
方式一:重写:
方式二:接口
方式三:抽象类和抽象方法