抽象:关注业务类容,忽略无关内容;
类:对象的模板,用户自定义的抽象数据类型
class 类名称{类体}
对象: 变量。创建对象后则可以通过对象调用类所定义的方法
类名称 obj=new 类名称();
obj.方法名称(参数);
面向对象的三大特性:封装,继承,多态;
封装:隐藏具体的实现细节,对外提供调用接口
private 当前类可见
默认 同包可见
protected 同包或子类可见
public 到处可见
继承:代码重用,批判继承
class 儿子 extends 父类{}
private
多态:调用同名方法,但是具体发操作逻辑不同
类内多态:方法的重载,方法名称相同,参数不同
参数个数,参数类型,参数顺序。
类间多态:方法的重写、覆盖
方法签名一致
对象多态:使用父类定义变量,创建子类对象
父类 obj =new 子类();
编译期类型和运行时类型;
final 最终的
final class类{} 不允许被继承
final 返回类型 方法名称(参数列表){} 不允许重写fi
final 数据类型 属性名称 一旦赋值不允许修改
final 数据类型 局部变量名称;一旦赋值则不允许修改
static 类/静态的
static 方法 可以通过【类名。方法名】的形式直接调用方法,也允许通过对象名的方式进行调用
在静态方法体中不允许使用this/super关键字
在静态方法只能直接访问静态成员
static 属性 当前类的所有对象共享同一个属性
static{} 在类加载完成后自己自动执行,没有办法再次调用
import static java.lang.Math.*;静态导入,可以在当前类中直接使用Math类中单静态方法
而不需要通过[Math.abs]子类的形式进行调用
常量定义 final static 类型 常量名称=初始
构造器: 不是成员,主要
super:
super()/super(参数)调用父类构造器,构造对象过程中有一个上溯流程,没必要通过SuperDrive方法进行super.的方法进行访问
supe.方法 访问父类中已经被重写覆盖定义的方法
this 指代当前类对象
this()/this(参数) 调用当前类的其它构造器
this.属性
this.方法
抽象类:语义不精确
abstract class 不允许直接创建new对象 只能够进行继承使用
抽象方法 方法不允许有方法体,即使是空方法体