企业网站推广费用,什么是网站维护,安全的网站建设服务,做结婚请柬网站有那些抽象类和接口 final关键字常量 单例模式#xff08;设计模式#xff09;枚举类抽象类抽象类的注意事项、特点使用抽象类的好处模版方法设计模式 接口接口的好处接口的注意事项 final关键字
final关键字是最终的意思#xff0c;可以修饰类、方法、变量。 修饰类#xff1a;… 抽象类和接口 final关键字常量 单例模式设计模式枚举类抽象类抽象类的注意事项、特点使用抽象类的好处模版方法设计模式 接口接口的好处接口的注意事项 final关键字
final关键字是最终的意思可以修饰类、方法、变量。 修饰类该类被称为最终类、特点不能再被继承了。修饰方法该方法被称为最终方法特点是不能被重写。修饰变量该变量有且仅能被赋值一次。 final修饰基本类型的变量变量存储的数据不能被改变。final修饰引用类型的变量变量存储的地址不能被改变但地址所指向对象的内容是可以被改变的。
常量
使用了static final 修饰的成员变量称为常量。作用常用于记录系统的配置信息、常量命名规范建议使用大小写英文单词多个单词使用下划线连接起来。常量记录系统配置信息的优势、执行原理 代码可读性更好可维护性也更好。程序编译后常量会被宏替换出现常量的地方全部会被替换成其记住的字面量可以保证使用常量和直接用字面量的性能是一样的。
单例模式设计模式
设计模式一个问题通常由n种解法其中肯定有一种解法是最优解。设置模式有20多种对应20多种软件开发中会遇到的问题。 -单例设计模式 作用确保某各类中只能创建一个对象。写法实现步骤 把类的构造器私有。定义一个静态变量记住类的一个对象。定义一个静态方法返回对象。 // 单例类
public class A {// 2、定义一个静态变量记住类的一个对象private static A a new A();// 1、私有构造器private A(){}// 3、定义一个静态方法返回对象public static A getObject(){return a;}
}
单例类有很多形式 如“饿汉式单例”拿对象时对象早就创建好了。
public class A {// 2、定义一个静态变量记住类的一个对象private static A a new A();// 1、私有构造器private A(){}// 3、定义一个静态方法返回对象public static A getObject(){return a;}
}如“懒汉式单例”拿对象时才开始创建对象。 特点延迟加载对象写法 把类的构造器私有。定义一个静态变量由于存储对象。提供一个静态方法保证返回的是同一个对象。
public class B {// 2、定义一个类变量量用于存储对象private static B b ; // null// 1、单例必须私有构造器private B(){}// 3、提供一个类方法返回类的一个对象public static B getObject(){if(b null){b new B();}return b;}
}
枚举类
枚举类是一种特殊类。写法
修饰符 enum 枚举类名{名称1 , 名称2, ... ; 其他成员…
}特点 枚举类中的第一行只能写枚举类的对象名称其要用逗号隔开。这些名称本质是常量每个常量都记住了枚举类的一个对象。
public enum A{
X , Y , Z;
}Compiled from A.java
public final class A extends java.lang.EnumA {public static final A X new A();public static final A Y new A();public static final A Z new A();public static A[] values();public static A valueOf(java.lang.String);
}枚举类都是最终类不可以被继承、枚举类都是继承java.lang.Enun类的。枚举类的构造器都是私有的写不写都只能是私有的因此枚举类对外不能创建对象。枚举类很适合做信息分类和标志。
抽象类
java中有一个关键字叫abstract它就是抽象的意思可以用它修饰类、成员方法。abstract修饰类这个类就是抽象类abstract修饰方法这个方法就是抽象方法。
修饰符 abstract class 类名{ 修饰符 abstract 返回值类型 方法名称(形参列表)}public abstract class A {// 抽象方法必须abstract修饰只有方法签名不能有方法体public abstract void test();}抽象类的注意事项、特点
抽象类中不一定要有抽象方法有抽象方法的类必须是抽象类。类有的成员成员变量、方法、构造器抽象类都可以有。抽象类最主要的特点抽象类不能创建对象仅作为一种特殊的父类让子类继承并实现。一个类的继承抽象类必须重写完抽象类的全部抽象方法否则这个类也必须定义成抽象类。
使用抽象类的好处
父类知道每个子类都要做某个行为但每个子类要做的情况不一样父类就定义成抽象方法交给子类去重写实现我们设计这样的抽象类就是为了更好的支持多态。
模版方法设计模式
提供一个方法作为完成某类功能的模版、模版方法封装了每个实现步骤但允许子类提供特定步骤的实现。模版方法设计模式可以提高代码的复用、并简化子类设计。写法 定义一个抽象类。在里面定义2个方法 一个是模版方法把共同的实现步骤放里面去。一个是抽象方法不确定的实现步骤交给具体的子类来完成。 建议使用 final 关键字修饰模版方法 模范方法是给子类直接使用的不能被子类重写。一旦子类重写了模版方法模版方法就失效了。
接口
java提供了interface关键字定义接口。
public interface 接口名 {// 成员变量常量// 成员方法抽象方法
} 接口不能创建对象接口是用来被类实现implements的实现接口的类称为实现类一个类可以实现多个接口。
修饰符 class 实现类类名 implements 接口1, 接口2, 接口3 , ... {//实现类实现多个接口必须重写完全部接口的全部抽象方法否则实现类需要定义成抽象类。
} 接口的好处
弥补了类单继承的不足一个类同时可以实现多个接口使类的角色更多功能强大。让程序可以面相接口编程这样程序员就可以灵活方便的切换各种业务实现更利于程序的解耦合。JDK 8开始接口新增了三种形式的方法增强了接口的能力更便于项目的扩展和维护。
public interface A{/*** 1、默认方法实例方法使用用default修饰默认会被加上public修饰。* 注意只能使用接口的实现类对象调用*/default void test1(){...}/*** 2、私有方法必须用private修饰(JDK 9开始才支持)*/private void test2(){...}/*** 3、类方法静态方法使用static修饰默认会被加上public修饰。* 注意只能用接口名来调用。*/static void test3(){...}}
接口的注意事项
接口与接口可以多继承一个接口可以同时继承多个接口[重点]。一个接口继承多个接口如果多个接口中存在方法签名冲突则此时不支持多继承也不支持多实现。一个类继承了父类又同时实现了接口如果父类中和接口中有同名的默认方法实现类会优先用父类的。一个类实现了多个接口如果多个接口中存在同名的默认方法可以不冲突这个类重写该方法即可。