力扣Hot100-final关键字,常量,抽象类(模板方法设计模式),接口

(一)final关键字

(2)常量

使用static final 修饰的成员变量被称为常量

作用:;通常用于记录系统的配置信息

注意:产量命名要求:单词大写,下划线连接多个单词

产量优势:

1.代码可读性好,可维护性高

(三)抽象类(abstract)

使用关键字abstract修饰的类,方法叫抽象类,抽象方法

注意:抽象方法必须在抽象类中实现

public abstract class A{

//抽象方法:必须abstract 修饰,只有方法签名,不能有方法体

public abstrct void test(); //这里不能加{ 。。。}等方法体

}

(四)抽象类的常见应用场景:模板方法设计模式 (面试,笔试,源码中会出现)

(1)场景:学生,老师都要写一篇作文:神经网络 第一段,最后一段相同 正文不同

未使用abstract时的学生类和老师类:

学生类:

java 复制代码
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("神经网络对我们的生活影响巨大!!!");
    }
}

老师类:

java 复制代码
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)使用抽象类后:先定义一个共有的父类:

java 复制代码
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();
}

学生类:

java 复制代码
package Day2_Abstract;

public class AbstractStudent extends Father{
    @Override
    public  void printmain(){
        System.out.println("实现过程包括:数据预处理,模型搭建,模型训练,模型评估,结果分析等~");
    }
}

老师类:

java 复制代码
package Day2_Abstract;

public class AbsractTeacher extends  Father{
    @Override
    public void printmain(){
        System.out.println("常与PCA,决策树等方法结合使用");
    }
}

进行测试test:

java 复制代码
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:

java 复制代码
package Interface.example;

public interface B {
    void testb1();

}
java 复制代码
package Interface.example;

public interface C {
    void testc1();

}

实现类D:

java 复制代码
package Interface.example;
//实现类
public class D implements B,C{
//未重写时会报错,Alt+回车 再回车即可实现重写

    @Override
    public void testb1() {

    }

    @Override
    public void testc1() {

    }
}

Test方法:

java 复制代码
package Interface.example;

public class Test1 {
    public static void main(String[] args) {
        //可以用实现类D来创建对象
        D d=new D();
        d.testb1();
    }
}
相关推荐
用户094248568037 小时前
第22章:JIT编译分层——Interpreter、C1、C2与热点探测
java·jvm
乌暮8 小时前
JVM 原理与实践:从运行时数据区到线上故障排查
java·开发语言·jvm·后端·学习·面试
长河1 天前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
可乐ea1 天前
GitHub Security Lab 开源 Fuzzing Taskflow:让 LLM 智能体自己跑完 C/C++ 模糊测试
jvm·c++·github·模糊测试·mcp·代码agent·智能体自动化
一条破秋裤1 天前
Linux 线程同步:读写锁
java·linux·jvm
wuminyu1 天前
JEP491中synchronized关键字引发的平台线程钉住解决方法简介
java·linux·c语言·jvm·c++
一条破秋裤2 天前
Linux 线程同步:条件变量
java·linux·jvm
谢亮_vipxieliang2 天前
GC 入门:G1 与 ZGC 怎么选
java·jvm·算法
小溪学编程2 天前
从 C++ 的规范变迁看语言发展
jvm·c++·面试
晚安code2 天前
JVM 类加载机制详解:双亲委派模型的原理、优势与三种打破方式
jvm