当前位置: 首页 > article >正文

java 面向对象高级

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{}

http://www.kler.cn/a/386300.html

相关文章:

  • 【LeetCode】每日一题 2024_11_14 统计好节点的数目(图/树的 DFS)
  • ES6字符串的新增方法
  • Keil基于ARM Compiler 5的工程迁移为ARM Compiler 6的工程
  • git配置远程仓库的认证信息
  • Elasticsearch基本概念及使用
  • Mysql数据库里的SSH连接
  • sql之count()函数解析
  • 实战| 使用深度学习分割和计算水体和农田面积【Pytorch附源码】
  • Turtlebot3 buger 硬件与操作平台详细介绍
  • ProcessBuilder调用脚本执行
  • 简记Vue3(四)—— 路由
  • 代码随想录第二十五天
  • 减速机在工业机械中的核心作用!
  • 如何实现Delay_us和Delay_ms延时(SysTick定时器)
  • Flink安装和Flink CDC实现数据同步
  • 05 SQL炼金术:深入探索与实战优化
  • Docker平台搭建方法
  • CST案例分析:TLM算法仿真5G毫米波手机天线和整机
  • H.264/H.265播放器EasyPlayer.js无插件H5播放器关于WASM的压缩优化
  • 领略CSS Flex布局的精髓:打造响应式与创新设计
  • 基于开源 AI 智能名片 S2B2C 商城小程序的视频号交易小程序优化研究
  • 人脸识别发展现状及发展前景
  • 【微信小程序】基本语法
  • appium启动 install driver安装驱动
  • 前端入门一之JS对象、字符串对象、数组对象、Data()对象等
  • HTML CSS H5C3样式语句汇总20241105