2023.0213 星期一

1 修饰符 abstract 抽象

1.1 abstract可以修饰2个位置

abstract可以修饰2个位置。
1 方法 抽象方法
2 类 抽象类

1.2 抽象方法

抽象方法是一个没有方法体的方法。只有方法的原型。
实例方法:

public void print(int i){sout(i);
}

抽象方法:
1 使用abstract修饰
2 没有方法体,只有原型。

public abstract void print(int i);

我们认为抽象方法是一个没有写完的方法。就不可以执行。
抽象方法一定需要被重写。

1.3 抽象类

一个被abstract修饰符修饰的类就是一个抽象类。

public abstract class A{ }

有抽象方法的类,必须是一个抽象类。

我们认为抽象类是一个没有完成的类。就不可以被实例。
抽象类一定要被继承。

1.4 抽象类与抽象方法的使用方法

抽象类要继承。
抽象方法要重写。

public abstract class A {public void print(){}public static void dis(){}public abstract void info();
}public class B extends A{@Overridepublic void info() {}

2 abstract的使用场景

面向对象语言最核心的特性是:多态。
父类 引用 = new 子类();
这个引用可以调用的方法是:
1 父类的方法
2 子类重写方法
都是在父类中声明的。

条件1:多态时方法必须在父类中声明。

条件2:父类没有方法的实现。

因为很多父类本身就是一个抽象的概念。
三角形,矩形,圆形都是具体的实例。
图形父类就是一个抽象的概念。

3 访问修饰符

在Java中一共有四个访问级别。但只有三个访问修饰符关键字。
级别 关键字 本类 同包的其他类 不同包的子类 不同包的非子类
公有 public y y y y
保护 protectd y y y
默认 (default) y y
私有 private y

4 枚举(关键字enum)

4.1 什么是枚举

枚举也是一种特殊的数据类型。
枚举也是一种特殊的类。
枚举就是一个有固定实例数量的类。

例如:计算机三原色RGB。交通信号灯颜色。季节。月份。

4.2 枚举的定义格式
public enum RGB {RED,GREEN,BLUE;
}

我们定义了一个枚举类型:RGB。
在这个类型中,有三个实例。分别是RED,GREEN,BLUE;

4.3 枚举使用的格式

枚举中第一个值,都是枚举的一个实例。

public class Test {public static void main(String[] args) {RGB rgb1 = RGB.RED;RGB rgb2 = RGB.BLUE;RGB rgb3 = RGB.GREEN;}
}
4.4 枚举本质上就是一个Java类

枚举是在JDK5才加入的新特性。
在JDK5之前。我们都是使用Java类的方式实现枚举的要求。
这是在JDK5之前,一个类只有三个实例的标准写法。

public class RGBClass {public final static RGBClass R = new RGBClass();public final static RGBClass G = new RGBClass();public final static RGBClass B = new RGBClass();private RGBClass() {}
}

在这个代码的基础上。我们把固定的代码删掉,会得到什么?

public class RGBClass {R;G;B;
}
4.5 如何使用枚举类型

枚举一般配合switch一起使用

RGB rgb ;
switch (rgb1){case RED:System.out.println("red");break;case BLUE:System.out.println("blue");break;case GREEN:System.out.println("green");break;
}

当一个方法的参数是一个枚举类型时
问:一个公司只有7个部门。用什么类型来表示这7个部门。
1 使用编号,int,分别1-7。
编写方法时。参数就是int。 public void print(int i){}
int数据类型合法的取值范围要比1-7大。
业务规范要求1-7的取值。但是语法要求合法的int类型太多了。

2 使用枚举。使用一个有7个实例的枚举。
编写方法时,参数是枚举类型。 public void print(RGB rgb){}
当RGB做为参数时,合法的取值有3个。RGB.RED , RGB.GREEN , RGB.BLUE;

4.5.1 枚举可以有属性和方法

枚举就是一个Java类。

public enum RGB {RED,GREEN,BLUE;private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}RGB.RED.setName(“红色”);
4.5.2 枚举中可以有构造方法

在JDK5之前的方式如下:

public class RGBClass {private String name;public final static RGBClass R = new RGBClass("红");public final static RGBClass G = new RGBClass("绿");public final static RGBClass B = new RGBClass("蓝");public RGBClass(String name) {this.name = name;}

删除掉统一可以不用写的内容之后

public class RGBClass {private String name;R ("红");G ("绿");B ("蓝");public RGBClass(String name) {this.name = name;}

按格式转换:枚举应该如下:

public enum RGB {RED("红"),GREEN("绿"),BLUE("蓝");private String name;RGB(String name) {this.name = name;}

5 接口(interface)

5.1 接口的声明

接口interface关键字。与class,enum是同级。

public interface 接口名{}

5.2 接口中的内容

JDK1.8之前
接口中只能写二种内容:
1 public static final int I; //公有静态常量。
2 public abstract void dis(); //公有抽象方法。

JDK1.8之后
接口中又多了二种内容:
1 公有静态方法
2 公有实例方法

static void print(){System.out.println("公有静态方法!");
}
default void info(){System.out.println("公有实例方法!");
}
5.3 接口的使用

接口中有抽象方法,所以接口本身不能被实例化。

接口的使用需要与类配合。与接口配合一起使用的类,我们叫实现类。

需要使用实现类。实现接口中的所有抽象方法。

实现的关键字:implements

public class 实现类 extends 父类 implements 接口列表{方法重写(){ }
}

1实现类可以在继承一个父类的同时,实现接口。
2 使用implements 关键字实现接口。
3 Java只支持单继承,但是可以支持多实现。
public class Impl01 implements Inter01,Inter02{
}
4 实现类应该实现接口中所有抽象方法。

public class Impl01 implements Inter01{@Overridepublic void dis() {System.out.println("实现类Impl01给出的方法实现!");}
}
5.4 接口与实现类之间也支持多态

类的多态:
父类 引用 = new 子类( );
接口的多态:
接口 引用 = new 实现类( );

接口的引用打点可以调用实现类的重写方法。

public class Test {public static void main(String[] args) {Inter01 inter01 = new Impl01();inter01.dis();inter01.info();}
}

抽象类 枚举 反射 接口相关推荐

  1. Java 枚举enum 枚举的来由 枚举的常用方法 枚举的构造函数 枚举中的方法 枚举继承接口

    Java5新增的特性,一种特殊的类型.本质上是一个类,但是有特殊的约束.这些约束让枚举更简洁.安全. 枚举本质是在一个常量集合,一个属于同一类型的常量集合.比如:四季(春夏秋冬).星期(一到七) 1. ...

  2. PHP接口与抽象类区别:接口用来扩展应用 抽象用来总结归纳

    1.理解 抽象类:比如男人,女人这两个类,那我们可以为这两个类设计一个更高级别的抽象类 人. 接口:我们可以坐着吃饭,可站着吃饭,可以用筷子吃饭,那么可以把这些吃饭的动作抽象成一个接口 吃饭 一个类只 ...

  3. 接口可以继承抽象类吗_Python接口类的多继承以及抽象类的单继承

    一.接口类(面向对象开发的思想和规范)的多继承 需求: 定义一个tiger类:会走,会游 定义一个hawk类:会走,会飞 定义一个swan类:会走,会游,会飞 (a)如果像以下代码的方式,则不能够满足 ...

  4. 枚举反射的应用(sql update语句匹配)

    枚举反射的应用(sql update语句匹配) protected void update(T o, boolean deleteflag) {StringBuilder sd = new Strin ...

  5. 抽象类:小样儿(接口),我一眼看出你就不是人(抽象类)

    养成习惯,先赞后看!!! 目录 前言 抽象类与接口的概念 `抽象类`: `接口`: 抽象类与接口的特点 抽象类的特点: 接口的特点: 抽象类与接口的区别 前言 这个问题其实UP在大学期间上关于JAVA ...

  6. Python设计模式二:接口类和抽象类(Python接口设计)

    系列文章目录 Python设计模式一:面向对象编程 文章目录 系列文章目录 前言 一.接口类和抽象类是什么? 基于接口编程而非实现 二.Python里如何实现接口类和抽象类? 三.接口类和抽象类的应用 ...

  7. java枚举类型原理_Java枚举类接口实例原理解析

    这篇文章主要介绍了Java枚举类接口实例原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 枚举类可以实现一个或多个接口.与普通类实现接口完全一 ...

  8. java抽象类可以实现接口吗?

    例子 来先看下面的图: ps:可以发现一个抽象类可以实现接口,并且完全不会提示你去实现接口.我觉得应该是因为抽象类本身就是抽象的,不能被实例化.即使这里实现了接口的方法也一样可能被具体的子类重写,所以 ...

  9. abstract(抽象类)与interface(接口)的区别

    文章目录 前言 一.abstract(抽象类) 1.用abstract关键字修饰方法 1.用abstract关键字修饰类 二.interface(接口) 总结 前言 abstract(抽象类)与int ...

最新文章

  1. 常见面试题:重写strcpy() 函数原型
  2. SSH框架执行自己定义的SQL语句
  3. Docker Swarm建立服务器集群
  4. .NET Core 工具中的新内容
  5. 爬虫-11-伪造电脑访问构建一个请求头
  6. 推荐算法(二)--算法总结
  7. Linux中用st_mode判断文件类型
  8. IDEA Spring环境搭建+简单入门(图文教程)
  9. 高中数学三角函数公式大全及其易错题型总结
  10. 60w风扇用多大电容_家里的40W电风扇怎么接电容?该用多大电容?怎么判断好坏?...
  11. 错误 bpbrm(PID=7552) 从客户端 - Script exited with status = 1 the requested operat
  12. https小灰锁(带黄色三角)如何变成安全的小绿锁
  13. 图片变色HSV-shader
  14. 什么是Merkle Tree(默克尔树)
  15. amoled led 排列_科普:为何AMOLED屏幕不用RGB排列
  16. 第二章:大数据文件系统之HDFS-CSDN就业班-专题视频课程
  17. 国外程序员也都是996么?
  18. 黑马 最最新 项目视频
  19. 高压功率放大器ATA4014VS高压功率放大器HSA42014
  20. 如何制作Ghost系统镜像

热门文章

  1. java 加密word_Java 加密和解密PDF文档
  2. Google Filament 源码学习(一):Filament 编译
  3. 相关系数R-判定系数R方的matlab实现
  4. table vue 背景图片_table中background背景图片自动拉伸
  5. 读透《阿里巴巴数据中台实践》,其到底有什么高明之处?
  6. ERROR: Failed building wheel for ctcdecode
  7. 财务管理专业计算机要学什么,我是学财务管理专业的,我想考计算机二级,请问考哪个比较好...
  8. esp8266的TCP通信基础教程(结合手机APP)
  9. 在 Windows 11、10 中隐藏某个磁盘
  10. 计算机控制键盘,键盘装置及其计算机控制系统的制作方法