1.final关键字
class Demo{
public static void main(String[] args) {
final int[] a=new int[]{1,2,3};
// a=new int[]{4,5,6}; 报错
a[0]=5;//可以,解释了final修饰引用性变量,变量存储的地址不能被改变,但地址所指向的对象的内容可以改变
}
}
什么是常量?
2.单例设计模式-懒汉式单例-饿汉式单例
3.枚举类
//常规写法
class Constant{
public static final int UP=0;
public static final int DOWN=1;
public static final int LEFT=2;
public static final int RIGHT=3;
}
class Demo{
public static void move(int direction){
switch (direction){
case Constant.UP:
System.out.println("向上移动");
break;
case Constant.DOWN:
System.out.println("向下移动");
break;
case Constant.LEFT:
System.out.println("向左移动");
break;
case Constant.RIGHT:
System.out.println("向右移动");
break;
default:
System.out.println("无效方向");
}
}
}
//枚举类写法,相较于常规的好处是
/*类型安全:枚举提供了更好的类型安全,因为它们限制了变量只能取预定义的值,而常规的静态常量类则没有这种限制。
可读性:枚举通常更易于阅读和理解,因为它们使用名称而不是数字或字符串来表示常量值。
维护性:使用枚举可以更容易地管理和维护一组相关的常量值,因为它们是集中定义的。
功能扩展:枚举可以有自己的方法和属性,这为扩展功能提供了可能,而常规的静态常量类则没有这样的能力。*/
enum Direction{
UP,DOWN,LEFT,RIGHT
}
class Demo2{
public static void move(Direction direction){
switch (direction){
case UP:
System.out.println("向上移动");
break;
case DOWN:
System.out.println("向下移动");
break;
case LEFT:
System.out.println("向左移动");
break;
case RIGHT:
System.out.println("向右移动");
break;
}
}
}
4.认识抽象类
5.模板方法设计模式
class A extends fu{
public void writemain(){
System.out.println("特殊方法A");
}
}
class B extends fu{
public void writemain(){
System.out.println("特殊方法B");
}
}
abstract class fu{
public final void write(){
System.out.println("公用方法1");
writemain();
System.out.println("公用方法2");
}
public abstract void writemain();
}
class Demo{
public static void main(String[] args) {
fu a=new A();
a.write();
}
}
/*
输出:
公用方法1
特殊方法A
公用方法2
*/
6.认识接口
//jdk 8之前,接口中只能定义常量和抽象方法
//接口不能创建对象
public interface A {
String STUDENT_NAME="li hua"; //接口中默认加上 public static final
// 等价于 public static final String STUDENT_NAME="li hua";
void run();//接口中给方法默认加上public abstract
//等价于 public abstract void run();
}
//Demo被称为实现类,可以同时实现多个接口,
//实现类实现多个接口必须重写全部抽象方法,否则必须定义成抽象类
public class Demo implements A{
@Override
public void run() {
}
}
public class Demo{
public static void main(String[] args) {
people p=new student();
doctor d=new student();
driver dr=new student();
}
}
interface driver{}
interface doctor{}
class student extends people implements driver,doctor{}
class people{}