(一)final关键字
(2)常量
使用static final 修饰的成员变量被称为常量
作用:;通常用于记录系统的配置信息
注意:产量命名要求:单词大写,下划线连接多个单词
产量优势:
1.代码可读性好,可维护性高
(三)抽象类(abstract)
使用关键字abstract修饰的类,方法叫抽象类,抽象方法
注意:抽象方法必须在抽象类中实现
public abstract class A{
//抽象方法:必须abstract 修饰,只有方法签名,不能有方法体
public abstrct void test(); //这里不能加{ 。。。}等方法体
}
(四)抽象类的常见应用场景:模板方法设计模式 (面试,笔试,源码中会出现)
(1)场景:学生,老师都要写一篇作文:神经网络 第一段,最后一段相同 正文不同
未使用abstract时的学生类和老师类:
学生类:
package Day2_Abstract;
public class Students {
public void print(){
System.out.println("\t\t《神经网络》");
System.out.println("\t\t 包括卷积神经网络,循环神经网络等" );
System.out.println("实现过程包括:数据预处理,模型搭建,模型训练,模型评估,结果分析等~");
System.out.println("神经网络对我们的生活影响巨大!!!");
}
}
老师类:
package Day2_Abstract;
public class Teacher {
public void print(){
System.out.println("\t\t《神经网络》");
System.out.println("\t\t 包括卷积神经网络,循环神经网络等" );
System.out.println("常与PCA,决策树等方法结合使用");
System.out.println("神经网络对我们的生活影响巨大!!!");
}
}
(2)使用抽象类后:先定义一个共有的父类:
package Day2_Abstract;
public abstract class Father {
/*设计模板方法设计模式
1.定义一个模板方法:.
* */
public void print(){
System.out.println("\t\t《神经网络》");
System.out.println("\t\t 包括卷积神经网络,循环神经网络等" );
//2:模板方法并不清楚正文部分怎么写,但是它知道子类中要写,所以设计为一个抽象方法
printmain();
System.out.println("神经网络对我们的生活影响巨大!!!");
}
//3定义一个抽象方法写正文,具体实现交给子类
public abstract void printmain();
}
学生类:
package Day2_Abstract;
public class AbstractStudent extends Father{
@Override
public void printmain(){
System.out.println("实现过程包括:数据预处理,模型搭建,模型训练,模型评估,结果分析等~");
}
}
老师类:
package Day2_Abstract;
public class AbsractTeacher extends Father{
@Override
public void printmain(){
System.out.println("常与PCA,决策树等方法结合使用");
}
}
进行测试test:
package Day2_Abstract;
public class test {
public static void main(String[] args) {
//target:搞清楚抽象类的应用场景之一:设计模板方法模式
//场景:学生,老师都要写一篇作文:神经网络
//第一段,最后一段相同 正文不同
Father s=new AbstractStudent();
s.print();
}
}
(四)接口
(1)接口中只能有成员变量和成员方法
(2)接口中成员变量默认是 常量
(3)接口中成员方法默认为抽象方法
public interface 接口名{
成员变量(常量)
//成员方法(抽象方法)
}
注意:接口不能被创建对象,接口是用来被类实现(implements)的,实现接口的类称为实现类
(4)实现类格式:
修饰符 class 实现类 implements 接口1,接口2,接口3,...{
}
(5)一个类可以实现多个接口,实现类实现多个接口,必须重写完全接口的全部出现方法,否则实现类需要定义为抽象类
定义一个接口B,C:
package Interface.example;
public interface B {
void testb1();
}
package Interface.example;
public interface C {
void testc1();
}
实现类D:
package Interface.example;
//实现类
public class D implements B,C{
//未重写时会报错,Alt+回车 再回车即可实现重写
@Override
public void testb1() {
}
@Override
public void testc1() {
}
}
Test方法:
package Interface.example;
public class Test1 {
public static void main(String[] args) {
//可以用实现类D来创建对象
D d=new D();
d.testb1();
}
}