抽象类、设计模式(模板模式和单例模式)、final关键词、接口(interface)
一、抽象类 1.概念 有abstract修饰的类,称之为抽象类,抽象类中包含抽象方法的.
2.abstract关键词
1)修饰类 - 抽象类
特点:
a.抽象类不能实例化,也就是不能new对象,只能new非抽象的子类.
b.如果一个类包含抽象方法,那么这个类一定是抽象类.
c.子类继承抽象父类,必须实现父类中所有的抽象方法,否者将子类变抽象类.
2)修饰方法 - 抽象方法
a.格式:
访问修饰符 abstract 返回值类型 方法名();
ps: public abstract void m1();
b.特点:抽象方法没有方法体
3)修饰变量 - 不能修饰变量
二、设计模式
1.概念
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
2.模板模式
特点:
模板模式的优势是,模板已经定义好了通用架构,使用者只需要关心自己需要实现的功能即可.
案例:
新司机:
开车:开门,点火,关门,[双手握住方向盘],熄火,停车
老司机:
开车:开门,点火,关门,[不用手握方向盘],熄火,停车
3.单例模式
1)概念
单例模式是一种常用的设计模式,通过单例模式可以保证整个系统中,一个类只存在一个实例对象.
2)单例模式类型
a.饿汉模式
在没有适用对象之前,就已经创建好对象
b.懒汉模式
在需要使用对象时,在进行创建
3)实现步骤:
a.将构造方法私有化,让它不能在类的外部使用new关键词创建对象
private static final 对象类 实例名 = new 对象类(); //饿汉模式
private static 对象类 实例名; //懒汉模式
b.在该类内部产生一个唯一的实例化对象,并且封装为private static类型的成员变量
private 对象类(){
}
c.定义一个静态方法返回唯一对象
public static 对象类 getIntance(){
return 实例名;
} //饿汉模式
public static 对象类 getIntance(){
return new 对象类;
} //懒人模式
d.创建单例对象
对象类 实例名 =对象类.getIntance();
实例名.成员变量 = 数据类型;
三、final关键词: 最终的,最后的
1.修饰类: 不可被继承
2.修饰成员变量: 不可变改变
注意:
成员变量定义时,不一定需要进行初始化操作,因为有默认初始化
final修饰的成员变量,一定要进行初始化操作
初始化位置有哪些?
1.声明的同时初始化
final int age = 10;
2.构造方法
final int a;
public Demo02Variable() {
a = 10;
}
public Demo02Variable(int a) {
this.a = a;
}
}
3.代码块
final int b;
{
b = 20;
}
3.修饰成员方法: 不可被重写
4.修饰局部变量:
基本类型: 值不可改变
引用类型: 地址值不可改变
四、接口(interface)
1.概念
接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。
2.格式定义
访问修饰符 interface 接口名称{}
静态常量:全大写多个单词用_连接,如:
public final static int MAX_VALUE =1000;
抽象方法:
public abstract void m1(); // 完整写法
abstract void m2();
public void m3();
void m4();
实现类:
访问修饰符 class 实现类名(接口名Impl) implements 接口名{}
public void m1() {修改的方法}
public void m2() {修改的方法}
public void m3() {修改的方法}
public void m4() {修改的方法}
注意事项:
a.不能new接口,只能new接口的实现类
接口名 实例名 = new 实现类名();
实例名.方法名;
b.实现接口就必须实现接口中所有的抽象方法 (m1,m2,m3,m4相互对应)
3.接口的使用
1)JDK1.7版本
公开的静态常量
公开的抽象方法
2)JDK1.8版本
默认方法:
a.default修饰词必须添加,用于表示默认方法,不是表示访问修饰符
b.public修饰词是可以省略不写
可以选择进行方法重写
静态方法
a.public修饰词是可以省略不写
b.属于接口的,通过接口直接调用.
调用方式: 接口名.方法名
不可以进行方法重写
3)JDK1.9版本
私有方法(静态私有/普通私有)
静态私有: 提取静态方法中共有部分内容
普通私有: 提取默认方法中共有部分内容
4.类和接口 类和类: 1 v 1 单继承 类和接口: 1 v n 多实现 接口和接口: 1 v n 多继承 接口和类: 没有 5.接口作为方法参数 / 返回值使用 作为方法参数:可以传所有实现类对象,所以具体使用的都是接口的实现类对象 作为返回值使用:可以返回所有实现类对象,所以具体使用的都是接口的实现类对象
访问权限默认值
关于抽象类
JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default
关于接口
JDK 1.8以前,接口中的方法必须是public的
JDK 1.8时,接口中的方法可以是public的,也可以是default的
JDK 1.9时,接口中的方法可以是private的
面试题: (重要) 1.接口和抽象类的区别 a.解释什么是接口和抽象类 b.从语法上/使用方式上分析两个的区别 c.使用场景
本文详细介绍了Java编程中的抽象类、设计模式(模板模式和单例模式)以及final关键字和接口的概念和应用。抽象类不能实例化,包含抽象方法;模板模式提供通用架构,子类只需实现特定部分;单例模式确保类只有一个实例;final修饰类、变量和方法,确保不变性;接口定义公共规范,实现多继承。同时探讨了JDK不同版本中抽象类和接口的访问权限变化。
1928

被折叠的 条评论
为什么被折叠?



