面向对象
访问修饰符
修饰符一般只修饰属性和方法,属性尽量使用private,方法尽量使用public
public公开的,只要在同一工程内就可以访问
protected受保护的,只能在当前包或子类中才能访问
缺省,没有修饰符即默认,只能在当前包中才能访问
private,私有的,只能在当前类中使用
类型修饰符
static:修饰变量成为静态变量,修饰方法成为静态方法
1, 静态属性和方法在new之后放入内存,而非静态变量和方法在new之前就放内存
2, 静态属性和方法通过“类名.属性/方法”来调用,而非静态,属性或方法通过“对象名.属性/方法”调用
final:修饰变量成为静态变量,修饰方法成为静态方法
1, 修饰变量使之成为常量,常量名全部大写,不能修改其值
2, 修饰方法使之不能被子类重写
3, 修饰类使之不能被继承
类
是对象的抽象概念,由属性(成员变量)和方法(成员方法)组成
构造方法:
1, 方法名和类名一样,没有返回值也不能写成void
2, 目的是给属性赋初值
3, 创建一个类会默认创建一个无参的构造方法,会默认调用super(),如果自定义了构造方法会覆盖默认的构造方法
重写:子类中的方法和父类的返回值类型、方法名、参数列表相同
重载:在同一个类中,方法名相同,参数列表不同(个数,类型,顺序)
对象
类的实例化,通过new创建对象(JDK1.8以后可以通过反射不使用new创建对象)
把属性和方法封到一个类里面,使用的时候通过对象来访问
封装
把属性和方法封到一个类里面,使用的时候通过对象来访问
实现封装:
1, 属性私有化
2, 对属性提供getter和setter
继承
提高代码复用,降低冗余,通过关键字extends来实现
1, 单根继承(但是可以多重继承)
2, 父类私有属性方法和构造方法不能继承
3, super表示父类实例对象,只能在子类中使用
4, super()表示调用父类构造方法(必须写在子类构造器中第一行)
5, this表示当前类的实例对象,能区*部变量和成员变量(属性)
6, this()表示调用当前类的构造方法,也不许放在首行
多态
1, 可以把父类当成子类来使用(实例化子类用父类接收)
2, 只能访问父类中的属性和方法,如果要访问子类独有的属性和方法要强制转换成子类
抽象类
通过abstract来定义
1, 可以包含抽象方法,不能直接实例化,只能实例化子类
2, 子类必须实现父类的抽象方法(如果不实现那么子类也必须是抽象类)
抽象方法:没有方法体,访问修饰符不能为private,因为这样子类就不能继承该方法也实现不了该方法
接口
通过interface来定义
1, 接口和接口可以多继承
2, 类和接口通过implements实现,也可以多实现(所以一般不采用接口多继承)
3, 由静态常量和抽象方法组成,对于常量可以省略public static final,对于方法可以省略public abstract