Java学习笔记------接口

接口

接口就是一种规则,对行为的抽象

定义和使用接口

用关键字interface来定义,public interface 接口名{}

接口不能实例化

接口和类之间是实现关系,通过impls关键字表示

public class 类名 implements 接口名{}

接口的子类(实现类),要么重写接口中所有的抽象方法,要么是抽象类

注意:

接口和类是实现关系,可以单实现,也可以多实线

public class 类名 implements 接口名1,接口名2{}

实现类还可以在继承类的同时实现多个接口

public class 类名 extends 父类 implements 接口名1,接口名2{}

练习

代码: 

package com.test.demo1;public abstract class Animal {private String name;private int age;public Animal() {}public Animal(String name, int age) {this.name = name;this.age = age;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public abstract void eat();public String toString() {return "Animal{name = " + name + ", age = " + age + "}";}
}
public class Dog extends Animal implements Swim{public Dog() {}public Dog(String name,int age) {super(name, age);}@Overridepublic void eat() {System.out.println("狗吃骨头");}@Overridepublic void swim() {System.out.println("狗刨式游泳");}public String toString() {return "Dog{}";}public void look_home(){System.out.println("小狗"+this.getName()+"在看家");}
}
public class Frog extends Animal implements Swim{public Frog() {}public Frog(String name,int age) {super(name, age);}@Overridepublic void eat() {System.out.println("青蛙吃虫子");}@Overridepublic void swim() {System.out.println("青蛙在游泳");}public String toString() {return "Frog{}";}
}
public class Rabbit extends Animal {public Rabbit() {}public Rabbit(String name,int age) {super(name, age);}@Overridepublic void eat() {System.out.println("兔子在吃草");}public String toString() {return "Rabbit{}";}
}
public interface Swim {public abstract void swim();
}
public class test {public static void main(String[] args) {Rabbit r=new Rabbit("小白",2);System.out.println("兔子"+r.getName()+"年龄为"+r.getAge());r.eat();Dog d=new Dog("小黑",4);System.out.println("狗子"+d.getName()+"年龄为"+d.getAge());d.eat();d.swim();d.look_home();Frog f=new Frog("小青",1);System.out.println("青蛙"+f.getName()+"年龄为"+f.getAge());f.eat();f.swim();}
}

运行结果:

接口中的成员特点 

成员变量:只能是常量,默认修饰符public static final

构造方法:接口中没有

成员方法:只能是抽象方法,默认修饰符:public abstract

接口和类之间的关系

类和类的关系:继承关系,只能单继承,不能多继承,但可以多层继承

类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

接口和接口的关系:继承关系,可以单继承,也可以多继承

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/501473.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】AVL树详解

目录 一、AVL树的概念 二、AVL树节点的定义 三、AVL树的操作 3.1 AVL树的平衡因子 3.2 AVL树的插入 3.3 AVL树的旋转 3.4 AVL树的验证 四、AVL树的完整代码 上一篇已经对关联式容器set/map/multiset/multimap进行了简答的介绍,大家可能发现它们有一个共同点&…

js滚动table动画

requestAnimationFrame()告诉浏览器你希望执行一个动画,,并且要求浏览器在下次重绘之前调用指定的回调,,更新动画。。。 请求动画帧,,也称帧循环,,, 改api能以浏览器的显…

基于ssm旅社客房收费管理系统+vue

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

如何选择合适的幻兽帕鲁服务器CPU核心数和内存大小,避免丢包和延迟高?

根据幻兽帕鲁服务器的实际案例分析选择合适的CPU核心数和内存大小以避免丢包和延迟高,首先需要考虑的是服务器的性能需求。幻兽帕鲁服务器推荐使用4核CPU和16GB内存,建议使用32GB以上的内存才能稳定运行。这表明对于幻兽帕鲁这样的游戏服务器来说&#x…

珠宝店如何利用微信管理系统提高效率和竞争力?

珠宝店可以利用微信管理系统来提高自身的业务效率和客户满意度。以下是微信管理系统在珠宝店中的应用: 1. 客户管理:珠宝店可以将客户导入微信,通过微信管理系统对客户进行管理。可以对客户进行标签管理,了解客户的购买偏好和需求…

JS api基础初学

轮播图随机版 需求:当我们刷新页面,页面中的轮播图会显示不同图片以及样式 分析:①:准备一个数组对象,里面包含详细信息(素材包含) ②:随机选择一个数字,选出数组对应…

IGCSE-Physics-Chapter10-课堂总结(编辑中)

10.2-Specific heat capacity(比热容) Energy and temperature Internal energy(内能) includes both the kinetic energy of the particles and chemical potential energy of the bonds between them. Energy and temperature are not the same thing.The internal energy…

excel导入标准化

excel导入较导出还是复杂一些,一般分为三个步骤.市面上低代码平台可以将常用的操作固化,并且形成收益,这也是挺好的。我将我的一些总结分享到网上也是我自己乐意的。毕竟尊重技术的还是搞技术的自身,一般企业老板并不太关心技术代…

期货开户始终坚持自己的交易系统

做期货其实很简单,赚钱的技术重复做!期货交易中最重要的是什么?就是坚定自己的交易理念。小编为大家介绍。 1、市场用最朴实无华的的现实告诉了我们颠扑不破的真理:投资市场永恒的规律是90%的人都亏损的规律,任何人都…

windows安装部署node.js以及搭建运行第一个Vue项目

一、官网下载安装包 官网地址:https://nodejs.org/zh-cn/download/ 二、安装程序 1、安装过程 如果有C/C编程的需求,勾选一下下图所示的部分,没有的话除了选择一下node.js安装路径,直接一路next 2、测试安装是否成功 【winR】…

Flutter中Future和Stream关系

Future和Stream类是Dart异步编程的核心。 Future 表示一个不会立即完成的计算过程。与普通函数直接返回结果不同的是异步函数返回一个将会包含结果的 Future。该 Future 会在结果准备好时通知调用者。 Stream 是一系列异步事件的序列。其类似于一个异步的 Iterable,…

应用稳定性优化1:ANR问题全面解析

闪退、崩溃、无响应、重启等是应用稳定性常见的问题现象,稳定性故障大体可归类为ANR/冻屏、Crash/Tombstone、资源泄露三大类。本文通过对三类故障的产生原因、故障现象、触发机制及如何定位等,展开深度解读。 本文将详解ANR类故障,并通过一…