1.6Java-接口、抽象类
目录
1.6.1接口概述
1.6.1.1为什么引入接口
1.6.1.1接口定义
1.6.2接口定义格式
1.6.3接口的使用
1.6.4接口成员的特点
1.6.4.1 成员变量
1.6.4.2 成员方法
1.6.4.3 构造方法
1.6.5 抽象类
1.6.5.1 抽象方法与抽象类
1.6.5.2 抽象类格式
1.6.6 类和接口的关系
1.6.7 抽象类和接口的区别
1.6.8 JDK8开始接口新增的方法
1.6.1接口概述
1.6.1.1为什么引入接口
狗:吃,睡,游泳
青蛙:吃,睡,游泳
兔子,吃,睡
如果父类的动物定义吃,睡,游泳,兔子继承动物,就代表兔子也可以调用游泳,这个显然不对,因为兔子根本不能游泳。为了解决这类问题,引入了接口,可以理解:接口是一种行为(规则)
1.6.1.1接口定义
接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法(功能),包含抽象方法 (JDK7及以前) , 默认方法和静态方法(JDK8)私有方法(JDK9)。
1.6.2接口定义格式
接口用关键字interface修饰
public interface 接口名 {
}
1.6.3接口的使用
接口是不能创建对象,必须有实现类才能使用,类实现接口用implements表示
public class 类名 implements 接口名 {
}
注意: 接口的实现类必须重写接口中的所有的抽象方法,要么该类是一个抽象类
1.6.4接口成员的特点
1.6.4.1 成员变量
只能是常量,默认修饰符:public static final
1.6.4.2 成员方法
只能是抽象方法,默认修饰符:public abstract
1.6.4.3 构造方法
没有,因为接口主要是扩展功能的,而没有具体存在
1.6.5 抽象类
1.6.5.1 抽象方法与抽象类
抽象方法
将共性的行为(方法)抽取到父类之后,由于每一个子类的执行的内容时不一样,所以在父类中不能确定具体的方法体,该方法就可以定义为抽象方法
抽象类
如果一个类中存在抽象方法,那么该类就必须声明为抽象类
1.6.5.2 抽象类格式
格式
抽象方法格式:
Public abstract 返回值类型 方法名(参数列表)
抽象类定义格式:
Public abstract class 类名{}
// 先定义抽象类,里面有一个抽象方法
public abstract class Area{// 定义抽象方法abstract void area();
}
// A类继承抽象类
public class A extends Area{@Overridevoid area() {System.out.println("我是A");}
}}
注意事项
抽象类不能实例化
抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
可以有构造方法
抽象类的子类
要么重写抽象类中的所有的抽象方法
要么是抽象类(但是这个还是要创建一个子子类继承这个抽象子类)
1.6.6 类和接口的关系
类与类的关系
继承关系,只能单继承,但是可以多层继承
类与接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口与接口的关系
继承关系,可以单继承,也可以多继承
1.6.7 抽象类和接口的区别
成员区别
抽象类
变量,常量;有构造方法;有抽象方法,也有非抽象方法
接口
常量;抽象方法
关系区别
类与类
继承,单继承
类与接口
实现,可以单实现,也可以多实现
接口与接口
继承,单继承,多继承
设计理念区别
抽象类
为了继承而来,让子类强制重写父类中的抽象方法
接口
对行为抽象,主要是行为
1.6.8 JDK8开始接口新增的方法
JDK7以前:接口中只能定义抽象方法
JDK8新特性:接口中可以定义有方法体的方法(默认,静态)
JDK9新特性:接口可以定义私有方法
简单了解一下,后面会详细讲解。
1.6Java-接口、抽象类相关推荐
- C++中的接口(抽象类)
1.Cpp中的接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现.接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念.如果类中至少有一 ...
- C++ 接口(抽象类)
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105020800 接 ...
- jdk8 接口抽象类区别_JDK 8时代的抽象类与接口
jdk8 接口抽象类区别 在新的Java 8日期和时间API:Stephen Colebourne的访谈中 , Stephen Colebourne告诉Hartmut Schlosser :" ...
- 重写,重载,抽象类,接口,抽象类和接口区别
1.多态之重写,重载 重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数.类型都完全一致时,就称子类中的这个方法重写了父类中的方法. new,virtual,ov ...
- 接口抽象类继承父类和子类
1.接口是什么? 接口可以理解为一个特殊的抽象类,是由全局常量和公共抽象方法组成的. 所以,如果,一个抽象类的方法都是抽象的,那么就可以通过接口的形式来表示. class 用于定义类 interfac ...
- java怎么给类中的私有变量赋值_Java学习笔记分享 如何理解接口抽象类和关键字...
不知不觉中,千锋重庆学习Java已经半个月了,同学们感觉受益匪浅.有一个同学本来是软件编程专业基础却是意外的差,什么标识符.变量的命名规则.方法的定义.数组.面向对象的封装.继承.多态,还有接口.抽象 ...
- java抽象机制_Java很好学:接口+抽象类+事件监听机制
接口?抽象类? 首先知道知道下接口.抽象类的概念 接口:只含有常量和抽象方法(只有方法名和参数不含方法体的方法) 抽象类:可以定义常量和抽象方法(和接口一样),还可以定义变量和普通方法和构造方法(和一 ...
- PHP对象和接口抽象类注意事项
Php 的对象的实现: 注:对象名称最好以对象名.class.php来进行命名. 1. 对于静态类的成员不能使用$this->这个来调用其静态类的成员和函数,应该使用self::成员或者方法来进 ...
- java类的继承,接口,抽象类总结
1. 类的继承 类和类之间可以实现继承关系,即从一个类中继承它的部分属性和部分方法,避免重写代码,提高了代码的重用性.比如武侠小说,言情小说,玄幻小说都属于小说,拥有小说所拥有的属性.继承的格式是pu ...
- 12.面向对象(继承/super/接口/抽象类)
面向对象 继承与派生 继承 继承顺序 继承原理 子类调用父类的方法(super) 组合 接口 接口的概念: 接口的概念解释和使用: python中的接口: 抽象类 面向对象 继承与派生 继承 什么是继 ...
最新文章
- 《玩转.NET Micro Framework 移植-基于STM32F10x处理器》--微软中国.NET Micro Framework项目组工程师所作之序...
- 复习Javascript专题(二):闭包,内存,以及垃圾回收机制
- Windows scp传输文件给Linux
- C# - 简单介绍TaskScheduler
- Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习...
- 巧用 TypeScript Literal Types 模拟枚举类型
- 程序员三年的门槛该如何跨过去?
- java 解析标记语言_Java XML可扩展标记语言(eXtensible Markup Language)
- java blueprint_blueprint(蓝本/蓝图)学习笔记
- 使用nginx负载均衡的webservice wsdl访问不到_谁说前端不用懂,Nginx 反向代理与负载均衡(超实用)...
- es6学习 http://es6.ruanyifeng.com/
- System Center 2012各组件介绍
- 使用Angularjs的ng-cloak指令避免页面乱码
- 【基础】华为设备浮动路由配置实战
- 前端文档汇总(觉得对您有用的话,别忘了给点个赞哦 ^_^ !) 1
- 为什么要编写轻量级的View Controller??
- 自己写好记的Oracle的 Group By 、 Group By Rollup和Group By Cube基础
- Linux CentOS 学习笔记
- 计算机英语朗读音频,新课标小学英语阅读精选(MP3+中英字幕) 第72期:电脑
- cesium 模型实体平移
热门文章
- 《Microduino实战》——1.3 开源软件
- 浅谈“全栈工程师需要掌握哪些技能”
- nginx 配置优化的几个参数
- 专访刘秋杉:我的人生是一场没有边界的无限游戏
- 怎么编写提醒人结账的短信息_我如何在短短8个月的时间里从编写第一行代码到获得$ 226K的工作机会...
- 面试中问的话题Spring工作原理
- LeetCode代码刷题(17~24)
- redis设置密码并修改查看的几种方式
- php输入框里的提示文字,input标签输入框带提示文字方法
- python_path