类的五大成分:成员变量、构造器、方法、代码块、内部类
变量
不加static修饰:实例变量,属于对象
加static修饰:类变量,属于类,被所有对象共享
方法
不加static修饰:实例方法,属于对象,对象名调用。
加static修饰:类方法,属于类,类名调用。无须创建对象即可调用,节省内存
main方法属于类方法
工具类
相当于C++全局函数
工具类的方法无须创建对象即可调用,提高了代码复用。
由于不需要创建对象,建议将构造器私有化。
代码块
静态代码块
类加载时自动执行。
实例代码块
每次加载对象时,在构造器前执行。
单例设计模式
饿汉式
public class A {
private static A a = new A();
private A() {
}
public static A getObject() {
return a;
}
}懒汉式
public class B {
private static B b;
private B() {
}
public static B getObject() {
if (b == null) {
b = new B();
}
return b;
}
}继承的权限修饰符:
private、public、protected
仅支持单继承,不支持多继承,但支持多层继承。
方法重写:添加@override注解,访问权限大于等于父类被重写的方法的权限
访问其他成员:默认按照就近原则,可以使用super关键字优先选择父类,super.method()
子类构造器:先调用父类构造器(默认调用super(),如果没有无参构造,手动调用super(…)),再执行自己。
在同一个类中,this(…)调用其他构造器
多态
对象多态、行为多态
使用父类类型的形参,去接受一切子类对象,扩展性更强,更便利。
父类 变量名 = new 子类();
子类 变量名 = (子类) 父类变量;
final
修饰类:不能继承。修饰方法:不能重写。修饰变量:赋值一次(常量)
abstract
接口
interface、implements