08-单例模式,继承,super和final
-
单例模式: 实例且只实例一个对象 模板只创建一个对象
两种模式
- 懒汉模式 : 特点是节省内存
- 饿汉式 : 特点是第一刻就把对象创建好等待着被使用
- 懒汉模式 : 特点是节省内存
public class Note7 {
static Note7 note; //在内存开辟空间,存储的是 Note7类型变量note
private Note7(){
}
public static Note7 note(){
if(note == null){
note = new Note7();
}
return note;
}
}
class Note8{
static Note8 note8 = new Note8(); //在类加载到内存时创建对象.
private Note8(){
}
public static Note8 getNote(){
return note8;
}
}
-
继承: 当我们想要一个模板,实现多种对象的时候,把代码提取出来放在一个类中,重复代码提取出来的类,我们叫他父类
- 父类: (超类,基类) 被继承者
- 子类: (派生类) 继承者
语法:
public class 子类名 extends 父类名{ }
注意事项:
- 一个类只能直接继承一个类,但是可以间接继承其他类
- 一个类如果没有明确extends一个类,那么 默认继承Object ,Object是一个类,是所有类的超类
范围:
子类可以继承父类中的所有数据,包括私有数据,但是要间接访问,构造方法不能继承
好处:
代码的重用
-
方法的重写:
如果子类和父类有相同的方法,子类的这个方法就叫重写
重写需要注意的地方:
1.构成重写的条件:
方法的返回值,
方法名,
参数列表相同,
修饰符的范围不能小于父类
2.私有方法和构造方法不能被重写
3.静态方法不存在重写,但是可以被继承
public class ExdentTest {
private String name;
private int age;
private char gender;
public static void main(String[] args) {
//
Son son = new Son();
son.eat();
}
}
-
java中的关键子final:
- 最终的,是一个修饰符
注意:
- final修饰类 (不可以被继承)
- 修饰方法 (不可以被重写)
- 修饰变量 (不可以被更改 —也就是所谓的常量)
public final class FinalTest { //该类不可以被继承
static final int A = 3; //常量
public static void main(String[] args) {
int a = 5;
System.out.println(a);
System.out.println(FinalTest.A);
}
}
-
java中的关键字Super:
- this: 当前对象,里面存的是当前对象的引用(地址)
- super: 当前对象的父类,里面存的是当前对象的父类的引用(地址)
两种用途有同名成员时,super调用父类
- 调用父类中的普通成员(方法和属性),如果父类和子类
- 在子类的构造方法中,super可以显示的调用父类的构造,用于传参()
注意: 1.super在构造方法中只能出现在第一行
2.在子类的构造方法中必需含有父类的构造,(没写的话就默认条用,父类没有无参构造会报错)