Java接口属性值定义_Java接口(interface)的定义和使用
Java-接口interface定义和使用
1.什么是接口
Java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩容子类能力。
即:Java中使用抽象类/父类表示通用属性时,每个类只能继承一个类,假如子类已经从一个父类继承了,就不能再继续继承另外的父类。但每个类可以实现多个接口,这样子类就拥有了更多的能力。
微观概念:接口是一种能力和约定。
接口的定义:代表了某种能力
方法的定义:能力的具体要求
2.接口的语法
API(应用程序编程接口): Application Program Interface
接口相当于特殊的抽象类,定义方式、组成部分与抽象类类似。
接口的定义语法:
interface 接口名 { }
接口的定义要求:
没有构造方法,不能创建对象
只能定义:公开静态常量、公开抽象方法
public interface MyInterface {
public static final String FIELD = "value";
public abstract void method();
}
//public 关键字仅限用于接口在于其同名文件中被定义
interface MyInterface {
// 公开静态常量(只能): public static final
public static final String A = "hello";
String D = "good"; // public static final 默认隐式存在、修饰
// 公开抽象方法(只能): public abstract
public abstract void method();
void m(); // public abstract 默认隐式存在、修饰
}
接口与抽象类的【相同】:
可编译为字节码文件(.class)
不能创建对象(接口不是类,也没有构造方法)
可以作为引用类型
具备Object类中所定义的方法
接口与抽象类的【不同】:
所有属性都只能且默认是公开静态常量,隐式使用public static final修饰
所有方法都只能且默认是公开抽象方法,隐式使用public abstract修饰
没有构造方法、没有动态/静态代码块
接口的使用语法:
// 增加/赋予1种/多种能力(逗号分隔) [约定]
calss Sub extends Super implements 接口名,接口名 {
@OverRide
public 返回值 method() { ... }
}
3.接口的规范
任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类。
实现接口中抽象方法,访问修饰符必须是public。
4.接口引用
同父类一样,接口也可声明为引用,并指向真实类对象。
注意:
使用接口引用作为方法形参,实现更自然的多态(只关注能力-具备能力的类对象均可传入)
仅可调用接口中所声明的方法,不可调用实现类中独有的方法
可强转回真实类本身类型,进行独有方法调用(注意判断真实类对象 instanceof)
接口引用的应用(伪代码示例-eclipse可编译运行)
/* (可编译通过的伪代码) */
// 使用接口引用作为方法形参,实现更自然的多态(只关注能力-具备能力的类对象均可传入)
public class TestApply {
public static void main(String[] args) {
// 接口应用伪代码
System.out.println("接口应用伪代码");
}
}
abstract class 船 implements 会漂浮的 {
public abstract void 漂浮(); // 子类去覆盖
}
class 小舟 extends 船 {
public void 漂浮() {}
}
class 游艇 extends 船 {
public void 漂浮() {}
}
class 木筏 extends 船 {
public void 漂浮() {}
}
class 纸壳 {}
class 纸壳箱 extends 纸壳 implements 会漂浮的 {
public void 漂浮() {
System.out.println("纸壳箱通过胶带多次山绕,具备了可以承载重量后,漂浮在水面上");
}
}
class 瓶子 {}
class 矿泉水瓶 extends 瓶子 implements 会漂浮的 {
public void 漂浮() { }
}
class 树 {}
class 大木头 extends 树 implements 会漂浮的 {
public void 漂浮() { }
}
class GameTeam {
// public void 过汉江 (船 boat) {
public void 过汉江 (会漂浮的 n) { // 使用接口引用作为方法形参,实现更自然的多态(关注行为、能力)
System.out.println("n可以传入具备 会漂浮的 能力的对象均可-多态");
}
}
interface 会漂浮的 {
public abstract void 漂浮();
}
接口引用指向实现类对象,以及强转回实现类对象
/* interface.java */
// 定义了一种能力:会跑的
interface Runnable {
public abstract void run();
}
// 定义了一种能力:会游的
interface Swimmable {
public abstract void swim();
}
// 定义了一种能力:会爬的
interface Climbable {
void climb();
}
// 定义了一种能力:会飞的
interface Flyable {
void fly();
}
/* TestApplyInterface.java */
public class TestApplyInterface {
public static void main(String[] args) {
Animal a = new Dog(); // 多态:父类引用指向子类对象
// 接口引用指向实现类对象,仅可调用接口中所声明的方法
Runnable r = new Dog(); // 指向一个会跑的xxx
r.run();
r = new Cat();
r.run();
r = new Bus();
r.run();
// 接口引用可强转回类的真实对象,进行独有的属性和方法的调用
if (r instanceof Bus) {
Bus b = (Bus)r;
System.out.println(b.seatNum);
}
}
}
class Animal{
String breed;
int age;
String sex;
public void eat() {}
public void sleep() {}
}
// implements 接口名 : 增加/赋予一种能力 [约定]
class Dog extends Animal implements Runnable,Swimmable { // 实现--->落地
String furColor;
public void run() {
System.out.println("狗在奔跑...");
}
@Override
public void swim() {
System.out.println("狗在游泳...");
}
}
// implements 接口名,接口名 : 增加/赋予多种能力(逗号分隔) [约定]
class Cat extends Animal implements Runnable,Climbable{
String furColor;
public void run() {
System.out.println("猫在奔跑...");
}
public void climb() {
System.out.println("猫在爬树...");
}
}
class Fish extends Animal{
//public void swim() {}
}
class Bird extends Animal{
//public void fly() {}
}
class Bus implements Runnable{
int seatNum = 50;
@Override
public void run() {
System.out.println("公交车在跑...");
}
}
输出:
狗在奔跑...
猫在奔跑...
公交车在跑...
50
Java接口属性值定义_Java接口(interface)的定义和使用相关推荐
- java的属性只能在类里面 方法外面定义
java的属性只能在类里面 方法外面定义 区别于python:python 既能在类里面(类属性) 又能在方法里面定义属性(实例属性) 转载于:https://www.cnblogs.com/clas ...
- Java约定俗成怎么定义_Java接口定义规范,摘自晓风轻专栏
1. 返回格式不统一 同一个接口,有时候返回数组,有时候返回单个:成功的时候返回对象,失败的时候返回错误信息字符串.工作中有个系统集成就是这样定义的接口,真是辣眼睛.这个对应代码上,返回的类型是map ...
- java端口是多少钱_Java 接口,最少必要知识
1.接口的基本概念 在 Java 中,被关键字 interface 修饰的"类"是接口. 接口的定义如下: interface 接口名称{ 全局常量: 抽象方法: } 2. 接口的 ...
- JAVA 抽象类、值交换、接口、多态
1 抽象类 为什么使用抽象类 1:定义Dog类 有颜色属性和叫的方法 2:定义Bird类 有颜色属性和叫的方法 3:定义其父类Animal 1:抽取共性颜色属性和叫的方法 1:颜色的属性可以使用默认初 ...
- java 接口方法名重复_Java接口/实现命名约定[重复]
本文翻译自:Java Interfaces/Implementation naming convention [duplicate] This question already has an answ ...
- java接口有非抽象方法_Java接口、抽象方法
1)Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能) ...
- java对外查询接口注意的地方_Java接口注意点
1.接口可以多实现:一个实现类可以同时实现多个接口 package com.qf.demo02_interface; //定义一种规则: interface A{ public void testA( ...
- java 代码 二义性是什么_Java接口默认方法带来的问题分析【二义性问题】
本文实例分析了Java接口默认方法带来的问题.分享给大家供大家参考,具体如下: 一 点睛 Java 8中,如果一个类实现两个或多个接口,即"变相"的多继承,但是若其中两个接口都包含 ...
- java接口可以扩展抽象类_Java—接口与抽象类
1.语法层面上的区别 1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法: 2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public sta ...
最新文章
- 解决org.apache.shiro.session.UnknownSessionException: There is no session with id的问题
- python点操作符语法_最基础的python语法
- zblog音频MP3播放器插件
- python2.7安装sqlite3模块
- 一个简单的定时任务小例子
- 【Java与智能设备】用户界面基础
- 主成分分析结果成分不显著_spss主成分分析结果解读
- 动态拨号云服务器安装Ubuntu系统使用说明
- Linux是怎么来的?终于有一篇文章讲清楚了
- GitHub 中国区前 100 名到底是什么样的人?
- 180422 3步法Windows10引导Ubuntu开机启动
- Windows 检测PPT WPS 幻灯片播放并获取窗口句柄
- 在springboot中使用jsp,设置webapp目录时的操作步骤
- sqlserver2012 查询远程数据库
- 你真的理解图像处理经典算法 SIFT 吗?最深入、最全面综述:尺度不变特征转换
- ORA-00600 [ktspgfb-1]
- 期末入门题库-C#实现
- 小米MIUI禁止系统更新
- matlab中的神经网络怎么用,matlab神经网络训练方法
- 碳排放zc汇总、碳排放权交易、省级碳排放效率、环保数据集(2007-2022年)
热门文章
- Eclipse 安装黑色主题皮肤(DarkTheme)
- 流媒体服务器 ZLMediaKit介绍
- 【活动预告】网易数字+技术线上沙龙 - 升级!数字化转型下的架构实践
- 涨知识!从草根到百万年薪程序员的十年风雨之路,搞懂这些直接来阿里入职
- 乔巴机器人 番外篇_乔巴超级机器人系列 篇二:乔巴超级机器人三号四号五号拼装及合体...
- Android问题集锦之三十七:No resource found 'Theme.AppCompat.Light.DarkActionBar'
- 【快速排序】n个元素最少要进行几趟?--王海艳
- 自学 Python 两个月的总结
- [20][03][71] Log Forging
- 【格蕾】重要的GCC内置函数总结