Java 基础 面向对象: 接口(interface )概念 以及接口之练习3 -定义一个接口用来实现两个对象的比较并 判断instanceof是否为同类
接口(interface )概念概念笔记 及测试代码:
/** 面向对象: 接口(interface ) 是与类并行的一个概念:
* 1.接口可以看成一个特殊的抽象类,它是常量与抽象方法的一个集合
* 2.接口里的常量默认: public static final 类型!
* 3.接口里的抽象方法,默认所有方法是: public abstract 修饰
* 4.接口没有构造器.
* 5.接口定义的是一种功能 ,此功能可以被类所实现(implements),比如:class BB (extends DD) implements AA;
* 6.实现接口的类必须重写其中的所有抽象类,方可实例化;若没有重写所有的抽象方法,则此类仍是一个抽象类.
* 7.类是可以实现(implements )多个接口, 类的继承(extends)是单继承!
* 8.接口与接口之间的继承关系,是可以多继承!一个可以继承多个!
* ----------
** 接口与具体的实现类之间也存在多态性
* 1.通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系
* 2.接口主要用于定义规范,解除耦合关系.
*/
测试代码:
public class Main_of_Coding { //TestAbstract
public static void main(String[] args) {
Duck d=new Duck();
d.fly();
d.run();
d.swim();
System.out.println("*************");
Main_of_Coding.test1(d);
Main_of_Coding.test2(d);
Main_of_Coding.test3(d); }
public static void test1(Runner r){
r.run();
}
public static void test2(Swimmer s){
s.swim();
}
public static void test3(Flier f){
f.fly();
}
}
interface Runner{
public abstract void run();
}
interface Swimmer{
void swim();
}
interface Flier{
void fly();
}
class Duck implements Runner,Swimmer,Flier{
@Override
public void run() {
System.out.println("鸭子跑啊跑,不然变成黄焖鸭!");
} @Override
public void swim() {
System.out.println("红掌拨清波");
} @Override
public void fly() {
System.out.println("丑小鸭也可以变成白天鹅!");
}
}
测试输出:
丑小鸭也可以变成白天鹅!
鸭子跑啊跑,不然变成黄焖鸭!
红掌拨清波
*************
鸭子跑啊跑,不然变成黄焖鸭!
红掌拨清波
丑小鸭也可以变成白天鹅!
练习3:
练习要求:
/** 面向对象: 接口之练习3
* 定义一个接口用来实现两个对象的比较。
* interface CompareObject{
* public int compareTo(Object o); //若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小
* }
* 定义一个Circle类。
* 定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口.
* 在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。
* 定义一个测试类TestInterface,创建两个ComparableCircle对象,调用compareTo方法比较两个类的半径大小。
*/
编写代码:
public class Main_of_Coding { //TestAbstract
public static void main(String[] args) {
ComparableCircle c1=new ComparableCircle(1);
ComparableCircle c2=new ComparableCircle(2);
ComparableCircle c3=new ComparableCircle(3);
System.out.println(c1.CompareTo(c1));
System.out.println(c1.CompareTo(c2));
System.out.println(c1.CompareTo(c3));
// System.out.println(c1.CompareTo(new String("6666")));
}
}
interface CompareObject{
public int CompareTo(Object o);
}
class Circle{
int radio; public Circle(int radio) {
this.radio = radio;
} public int getRadio() {
return radio;
} public void setRadio(int radio) {
this.radio = radio;
}
}
class ComparableCircle extends Circle implements CompareObject{
public ComparableCircle(int radio) {
super(radio);
}
@Override
public int CompareTo(Object o) {
if(this==o)
return 0;
else if(o instanceof ComparableCircle){ //判断o是否是ComparableCircle
ComparableCircle c=(ComparableCircle)o;
if(this.getRadio()>c.getRadio())
return 1;
else if(this.getRadio()<c.getRadio())
return -1;
else
return 0;
}
else{
// return -2;
throw new RuntimeException("传入的非ComparableCircle对象 不可进行比较!");
}
}
}
输出结果:
0
-1
-1
添加测试代码段:
System.out.println(c1.CompareTo(new String("6666")));
结果:
Exception in thread "main" java.lang.RuntimeException: 传入的非ComparableCircle对象 不可进行比较!
at Coding.ComparableCircle.CompareTo(Main_of_Coding.java:61)
at Coding.Main_of_Coding.main(Main_of_Coding.java:21)
Java 基础 面向对象: 接口(interface )概念 以及接口之练习3 -定义一个接口用来实现两个对象的比较并 判断instanceof是否为同类的更多相关文章
- Java 基础 面向对象- 成员内部类/局部内部类/举例Comparable 接口的匿名内部类
笔记: package 任务135; /**类的 内部类, *1.相当于说, 我们可以在类的内部再定义类, * 2.成员内部类: * a.是外部类的一个成员,4个修饰符:static, final , ...
- JAVA基础——面向对象三大特性:封装、继承、多态
JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...
- JAVA(一)JAVA基础/面向对象基础/高级面向对象
成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...
- Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- java基础面向对象之类与对象
java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- Java基础-面向对象第一特性之封装(Encapsulation)
Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...
- java基础—面向对象2
一.JAVA类的定义
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...
随机推荐
- 字符串匹配算法---BF
Brute-Force算法,简称BF算法,是一种简单朴素的模式匹配算法,常用语在一个主串string 内查找一个子串 pattern的出现位置. 核心思想: i 遍历主串string i 每自增一次, ...
- PCL学习(三) SAC-IA 估记object pose
SAC-IA是基于RANSAC算法的对齐算法 通过降采样提高法向计算.FPFH特征的计算 最后通过SAC-IA计算得到对齐的旋转和平移 #include <Eigen/Core> #inc ...
- ROS下gazebo打开出现问题
通常情况下,在装完ros后,打开gazebo, 会出现无法连接服务器获取模型的情况.这样,我们打开gazebo, 终端会提示timeout,gazebo界面没有网格. 这是因为服务器网站地址好像已经换 ...
- Z1. 广度优先搜索(BFS)解题思路
/** BFS 解题思路 特点:从某些特定的节点开始,感染相邻的节点; 被感染的节点,再感染其相邻的节点,以此类推. 题目常见于数据结构包括 二维数组.树.图 **/ /** 1). 二维数组特定节点 ...
- [转帖]当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?
改天学习一下. https://www.cnblogs.com/alisystemsoftware/p/11570806.html 当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题 ...
- 使ssh记住密码
前面介绍过Conemu , Msys2工具,提升了windows本地文件操作的效率,但使用ssh时候,总需要重新输入密码,不能像SercurityCRT等工具记住密码,使用时不是很爽快. 其实通过ss ...
- MySQL创建用户、为用户授权
一.创建用户 1.root用户(管理员)登录,进入mysql数据库 mysql> use mysql Database changed 2.创建用户 1.创建用户: # 指定ip:192.168 ...
- 更改CodeBlocks注释的颜色
- 使用Struts2实现图片上传和拦截器
今天来分享一个图片上传 现在很多小项目里面基本上都有要显示图片的功能,所以呢图片上传是基本要掌握的啦 一般的图片上传原理就是从本地选择一张图片然后通过io流发布到服务器上去 上传方案基本有三种: 1. ...
- SQL 遍历删除所有表的数据
https://www.cnblogs.com/yige/p/5193253.html declare @sqlTabName varchar(100);-- 声明游标DECLARE C_Employ ...