内容
- 单例模式
- abstract修饰符
- final修饰符
- 接口
单例模式
- 控制一个类有且只有一个对象
//1。醉汉式
class Sun{
//私有化构造方法
private Sun();
//创建私有的、静态的,属于本类类型的对象
private static Sun only = new Sun();
//提供一个公共的、静态的、返回本类类型的对象的方法
public static Sun getOnly(){
return only;
}
}
//2.懒汉式:尚不完善
class Sun{
private Sun(){}
public static Sun only;
public static Sun getOnly(){
if(only == null)
only = new Sun();
return only;
}
}
abstract修饰符
- 抽象类、不能创建对象
- 一个类里面只要出现了抽象方法,那么这个类一定要变成抽象类
- 面试题:finnal和abstract能不能同时修饰一个方法?
不能,finnal修饰的方法叫最终方法,不能被覆盖;abstract修饰的方法叫抽象方法,需要子类区覆盖。所以矛盾。
finnal修饰符
- final能修饰:类、方法、变量(属性+局部变量)
- 面试题:String和Math类都是用final修饰的,为什么?
String类叫做字符串类,是Java中比较基础、核心的类,越是基础,越是核心的类,越应该保持一致;Math类里面定义的都是公式定理,不能随意的修改。 - finnal修饰方法,只能被继承,不能被覆盖
接口
- 如何定义接口
interface xxx{
//接口里面的属性默认加上三个修饰符:public、static、final
int x = 45;
//接口里面的方法默认加上两个修饰符:public、abstract
void test();
}
-
接口是一个规范,不能创建对象
-
面试题:抽象类和接口之间的的区别
1.类型不同 抽象类:class;接口:interface
2.实现不同 抽象类:extends 单根继承;接口:implements 多重实现
3.里面定义的属性不同 抽象类:默认都是普通的属性;接口:默认都是静态的最终变量
4.里面定义的方法不同 抽象类:既可以定义抽象方法也可以定义普通方法;接口:只能写抽象方法,从jdk8.0开始接口里面允许出现普通方法了,但必须加上static。