网站首页 > java教程 正文
抽象类
- 关键字abstract,可修饰类、成员方法
- abstract修饰类为抽象类,修饰方法为抽象方法
- 抽象方法只有方法定义,不能实现方法体
- 类中声明了抽象方法,该类必须声明成抽象类
- 抽象方法具体实现由子类完成,子类必须完成父类中的抽象方法
- 抽象类中不一定有抽象方法,但有抽象方法的类必须是抽象类
- 类中有的成员,抽象类中都有
- 抽象类不能创建对象
/**
* 抽象类定义
*/
abstract class Animal {
/**
* 定义抽象方法
*/
public abstract void run();
}
/**
* 子类继承抽象类
*/
class Dog extends Animal {
@Override
public void run() {
System.out.println("小狗跑起来了");
}
}
模板方法模式
- 功能定义成模板方法,放在抽象类中,模板方法中只定义通用且能确定的代码
- 模板方法中不能确定的工能定义成抽象方法,子类去实现
public class AbstractDemo1 {
public static void main(String[] args) {
Bmw b = new Bmw();
b.run();// 返回 BMW跑起来了
Bc bc = new Bc();
bc.run();// BC跑起来了
}
}
/**
* 定义抽象模板
*/
abstract class Car {
// 确定功能定义模板方法
public final void run() {
String name = name();
System.out.println(name+"跑起来了");
}
// 不确定功能定义抽象方法
abstract String name();
}
/**
* 定义子类
*/
class Bmw extends Car {
@Override
String name() {
return "BMW";
}
}
/**
* 定义子类
*/
class Bc extends Car {
@Override
String name() {
return "BC";
}
}
接口
- interface关键词定义接口
- 一个类实现多个接口,接口中有同样的静态方法不冲突(接口的静态方法只有自己调用)
- 一个类继承了父类,同时又实现了接口,父类和接口有同名方法,默认使用父类的
- 一个类实现了多个接口,接口中存在同名方法,不冲突,但实现类必须重写同名方法
- 一个接口继承多个接口,多接口中同名方法,修饰必须相同
- jdk1.8之前接口中只能定义常量和抽象方法
/**
* 定义接口
* 由于接口体现规范,所以修饰符可以省略
*/
interface People {
// 定义常量
public static final String NAME = "名称";
String USERNAME = "用户名";
// 定义抽象方法
public abstract void run();
void start();
}
- 接口必须被实现,implements关键词实现,可以多继承整合接口
interface ManPeople {
void run();
}
interface WomanPeople {
void eat();
}
/**
* 接口可以多继承
*/
interface NeutralPeople extends ManPeople,WomanPeople{
void sleep();
}
class Xiao implements NeutralPeople {
@Override
public void run() {
System.out.println("跑");
}
@Override
public void eat() {
System.out.println("吃");
}
@Override
public void sleep() {
System.out.println("睡觉");
}
}
- jdk1.8之后接口新增方法,默认public修饰
① 默认方法default
② 静态方法,,必须接口名调
③ 私有方法, 必须接口内部访问 jdk1.9支持
public class InterfaceDemo1 {
public static void main(String[] args) {
People p = new People();
p.run();
Man.woman();
}
}
interface Man {
// 默认方法
default void run() {
System.out.println("默认方法");
Neutral();
}
// 静态方法,必须接口名调
static void woman() {
System.out.println("静态方法");
}
// 私有方法, 接口内部访问 jdk1.9支持
private void Neutral() {
System.out.println("私有方法");
}
}
class People implements Man {
}
猜你喜欢
- 2024-10-04 “全栈2019”Java第九十六章:抽象局部内部类详解
- 2024-10-04 JAVA笔记(十)面向对象——接口和抽象类
- 2024-10-04 Java抽象类与接口的区别(java抽象类与接口的区别是什么)
- 2024-10-04 Java接口和抽象类有什么共同点和区别?
- 2024-10-04 Java之路-08抽象类与接口(java抽象类入门教程)
- 2024-10-04 java基础——抽象类和接口(java抽象类和接口的使用场景)
- 2024-10-04 Java学习:抽象方法和抽象类的使用
- 2024-10-04 Java中的抽象类与接口(java抽象类和接口的定义)
- 2024-10-04 java基础学习——abstract抽象类(java 抽象)
- 2024-10-04 JAVA之抽象类和接口(java抽象与接口)
你 发表评论:
欢迎- 06-15Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 06-15推荐一款超棒的SpringCloud 脚手架项目
- 06-15IDEA将项目打包成jar包(idea打包普通java项目)
- 06-15Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 06-15记录Dockerfile将jar包构建成部署所需的镜像
- 06-15项目基础部署汇总八---linux下xxl-job安装
- 06-15Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 06-15终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 最近发表
-
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 推荐一款超棒的SpringCloud 脚手架项目
- IDEA将项目打包成jar包(idea打包普通java项目)
- Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 记录Dockerfile将jar包构建成部署所需的镜像
- 项目基础部署汇总八---linux下xxl-job安装
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 如何将本地JAR文件添加到Maven项目中
- Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)