学习目标:
static、继承、多态、抽象、接口
学习内容:
- static:静态,可以修饰成员变量、成员方法
- 类变量:会被类的全部对象共享
- 实例变量:属于每个对象
- 类方法:
应用场景:比如工具类
工具类中的方法都是类方法,分别用来完成各个功能;直接用类名.类方法
调用,提高开发效率。
工具类没有创建对象的需求,建议将工具类的构造器进行私有
注意事项:
类方法中可以直接访问类的成员,不可以直接访问实例成员
实例方法中既可以直接访问类成员,也可以访问实例成员
实例方法中可以出现this关键字,类方法不行
-
代码块
静态代码块: static{}
特点:类加载时自动执行,由于类只加载一次,所以静态代码块也只执行一次
作用:完成类的初始化,例如:对类变量的初始化赋值
实例代码块: {}
特点:每次创建对象时执行,并在构造器前执行
作用: 对实例对象进行初始化赋值 -
单例设计模式
确保一个类是有一个对象
public class A{
//2.定义一个类变量记住类的一个对象
private static A a = new A();
//1.必须私有类的构造器
private A(){}
//3.定义一个类方法返回类的对象
public static A getObject(){
return a;
}
}
- 继承:extends关键字,子类能继承父类的非私有成员(成员变量,成员方法)
-
同包下不同类:
-
不同包下的任意子类不同类(需继承)
-
不同包下的任意类
子类继承的特点: -
在子类方法中访问其他成员,是依照就近原则的
子类局部范围 -> 子类成员范围 -> 父类范围 -
如果子父类中出现了重名的成员,优先使用子类
如果一定要用父类的成员:super.父类成员变量/方法
补充知识:this(…)调用兄弟构造器
this(...)和super(...)都只能放在第一行
- 多态:有继承/实现关系;存在父类引用子类对象;存在方法重写
多态是对象、行为的多态,Java中的属性(成员变量)不谈
- 多态的好处
- 类型强转
-
final
示例:
-
抽象:abstract修饰;抽象方法只有方法签名
- 模板方法设计模式
建议使用final关键字修饰模板方法,表示不能被子类重写
- 接口:interface关键字
- 认识接口
接口是用来被类实现(implements)的,实现接口的类叫做实现类;一个类能实现多个接口
。 - 接口新增的三种方式
注意事项:
1.一个接口继承多个接口,如果多个接口中存在方法签名冲突,则此时不支持多继承
2.一个类实现多个接口,如果多个接口中存在方法签名冲突,则不支持多实现
3.一个类继承了父类,又同时实现了接口,父类中和接口中有同名的默认方法,实现类会优先父类中的
4.一个类实现了多个接口,多个接口中存在同名的默认方法,可以不冲突,这个类重写该方法即可
- 匿名内部类:本质是一个子类,并会立即创建出一个子类对象
- 枚举
应用场景:比如一些信息的选择
使用枚举enum的话就只有boy跟gril,不会有其他类型,对外也不能新建对象,因为是私有的
- 泛型