# OOP面向对象
# 包的作用
- 区别类名相同的类,方便管理,包名是域名的反写且必须都为小写,保障全球唯一
- 有助于对访问权限实施控制
- 有助于划分和组织Java中各个类,每个包中的类的职责不同
# new操作符的作用
- 分配内存空间
- 初始化变量
- 执行构造方法
- 返回引用(地址)
# 封装
作用:
控制外界对数据的操作权限,封装在Java中也是一种规范
实现:
- 定义私有的属性
- 定义公开的get/set方法
boolean
类型的封装get
方法可以是is
# static修饰符
- 使用static修饰的变量属于这个类所有,通常把使用static修饰的属性和方法称为类属性(类变量)、类方法,不使用static修饰的属性和方法属于单个对象,通常称为实例属性(实例变量)、实例方法
- java中普通类是不允许声明静态的,只有内部类才可以
- 在加载类的过程中,完成静态变量的内存分配,再执行静态块,两者是在创建对象之前执行的,类属性、类方法可以通过类名和对象名访问,实例属性、实例方法只能通过对象名访问,类方法只能访问静态成员(类成员)
- 在方法中不能定义static变量
- 静态方法中不能使用this或super关键字
# 构造方法
- 方法名与类名相同
- 无返回值类型 作用:用于再次初始化对象 方法重载
- 在同一个类中或父子类中(父子类时,同参数列表就是重写,不同参数列表就是重载)
- 方法名相同
- 参数列表不同(顺序、数量或类型不同)
# final修饰符
- 用final修饰的类不能被继承
- 用final修饰的方法不能被重写
- 用final修饰的变量,将变成常量,只能赋值一次
编码规范:常量所有字母大写,使用_分隔
# extends继承
- 使用extends继承类
- 使用super(参数列表)调用父类的构造方法,默认调用父类的无参构造方法
- 使用super.调用父类的属性和方法
注:this调用自身构造函数和super调用父类构造方法时必须放在第一句,一定要跟父类的构造方法的参数类型相匹配
- 作用:
- 代码复用,方便扩展
- 子类继承父类的属性和方法,并保留自身特有的属性和方法
# super的作用
- super调用父类构造方法,必须放在方法第一行,super(..)且参数列表必须与父类构造函数相同
- super调用父类属性和方法,可放在方法任意一行
# 重写
子类中可以根据需求对从父类继承的方法进行重新编写,称为方法的重写或方法的覆盖,方法重写必须满足如下需求:
- 重写方法和被重写方法必须具有相同的方法名和参数列表,返回值类型相兼容
- 私有方法不能被重写
- 重写方法不能缩小被重写方法的访问权限
- 子类的方法不能抛出父类的方法没有抛出的异常
# abstract抽象
- 抽象的类不能被实例化
- 抽象的方法没有方法体
- 抽象方法只能在抽象类中定义而抽象类中可以定义非抽象方法
- 非抽象子类必须实现父类的抽象方法(抽象子类可以不实现父类的抽象方法)
# Java接口的特征
- 不存在构造方法
- 方法只能是公开的、抽象的
- 只能存在public、static、final的变量,即公开的静态常
- 接口之间是多继承的,所以可以通过接口来实现多继承
- 实现接口的非抽象子类必须实现接口的抽象方法
- 不能实例化
# 多态
- 父类做形参,子类做实参
- 父类做类型,子类实例化
- 父类做方法的返回值,子类实例化
上面3点等于 父类代替子类
- 多态概念:
同意个实现接口,使用不同的实例而执行不同的操作
- 多态变量:
一个父类变量引用子类不同对象。
- 方式:
- 使用父类作为方法形参实现多态。
- 使用父类作为方法返回值实现多态。
一个变量只有一个类型,这个类型是在编译时指定的,按照多态的定义,一个变量可以指定不同的类型的对象,在java中,当这个条件成立时,那这个变量就是多态性。 父类变量可以引用子类对象,这是Java允许的。
- 多态的变量:
- 优点:父类的共同行为可以多态的表现出来。
- 缺点:子类特有的行为,不可以直接调用,如果调用应进行类型判断后强制转换;
- 多态作用:提高代码复用性和程序的可拓展性。
← Java 基础