网站首页 > java教程 正文
抽象类:
如果自下向上的在类的继承层次结构中上移(继承层次结构中父类在上,子类在下),位于上层的类更具有通用性,也更加抽象,因此,java中有一种类不能实例化对象,只能被子类继承,这样的类就是抽象类。
抽象方法是只定义,但没实现的方法,例如:
public void getName();//注意这里的分号。
抽象类中可以没有抽象方法,但是一个类只要有一个抽象方法这个类就是抽象类。
抽象方法和抽象类通过”abstract”关键字定义,例如:
抽象类:public abstract class Person {}
抽象方法:public abstract void getName() ;
抽象方法充当着占位的作用,它的具体实现在子类中。一个子类继承一个抽象类有两种情况:
一种是在子类中没有实现全部的父类的抽象方法,这样子类也是一个抽象类,必须用“abstract”关键字。
另一种是实现全部的父类的抽象方法,这样子类就不是抽象的。
注意:可以定义一个抽象类的引用,但必须指向实现了所有抽象方法的子类
接口:
接口不是类,而是对类的一组需求描述。
接口中的方法只定义不实现(后来可以实现静态方法),接口中不能包含普通域(可以包含静态常量)。
接口中的方法自动的设置为public,接口中的域自动设置为public static final。
定义一个接口:
public interface Person { String getName(); }
一个类实现一个接口:
class Student implements Person{ string name; String getName() { return name; } }
一个类实现一个接口需要两个步骤:
将类声明为实现给定的接口。
实现接口中的所有方法
因为接口并不是类,接口也不可以实例化,这样一看你可能会感觉接口和抽象类没什么区别,但是一个类可以实现多个接口,只能继承一个父类,通过接口,java间接的实现了多重继承。
java se8之后可以在接口中实现静态方法。
可以为接口方法提供一个默认实现,必须用default修饰符标记这样的方法,一个类实现一个接口,如果这个接口中一个方法有默认实现,那么这个类可以不再实现这个方法(极度不推荐这样做,除非确实不需要实现这个方法)。
解决默认方法冲突:
如果一个接口中将一个方法定义为默认方法,然后又在父类中或另一个接口中定义了同样的方法,java中这样规定:
父类优先。如果父类提供了一个具体方法,同名且具有相同参数类型的默认方法会被忽略
接口冲突。如果两个接口提供了一个同名且同参数的默认方法,那么实现这两个接口的类必须覆盖这个方法。
猜你喜欢
- 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学习:基础(抽象类、模板方法模式、接口)
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)