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关键字 // ...
随机推荐
- OWASP TOP 10(OWASP十大应用安全风险)
TOP1-注入 当不受信任的数据作为命令或查询的一部分发送到解释器时,会发生注入漏洞,例如SQL,NoSQL,OS,LDAP注入(轻量目录访问协议),xpath(XPath即为XML路径语言,它是一种 ...
- TCP Socket + UDP Socket
小例子:http://soft.yesky.com/238/2035738.shtml 服务器程序: #include <iostream> #include <WinSock2.h ...
- 按CSS查询一个元素
按CSS查询 示例1 查询一个 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 < ...
- 控件setText与setValue赋值顺序先后区别
1.text与value设置不同的值一定要先赋值 value后赋值text, 否则全为value值 2.若只setValue,则getValue 与 getText获取的值全为value值 $('#t ...
- ELK实战搭建+x-pack安全认证
阅读目录: ELK日志平台入门简介1.1 ELK原理拓扑图1.2 Elasticsearch安装配置1.3 Kibana安装配置1.4 Kibana汉化及时区修改1.5 Logst ...
- WUST 设计模式 实验一 单例模式的应用
实验一 单例模式的应用 实验目的 1.掌握单例模式(Singleton)的特点: 2.分析具体问题,使用单例模式进行设计. 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的 ...
- SysTick 定时实验(非中断)
实验目的:利用 SysTick 产生 1s 的时基,LED 以 1s 的频率闪烁. 编程要点 1.设置重装载寄存器的值 2.清除当前数值寄存器的值 3.配置控制与状态寄存器 过程 我们创建了两个文件: ...
- (1+x)^n
#include<stdio.h> int main() { int n,i; while(scanf("%d %d",&n,&i)!=EOF) { i ...
- (十二)Activitivi5之流程控制网关:排他
一.概念 所谓排他网关 顾名思义 执行到该网关,根据条件只能走一条执行线 二.案例 当流程走到“学生请假”任务节点的时候, /** * 完成任务 */ @Test public void test_c ...
- 搭建SSM环境(淘淘商城)
本文用到的资料: 链接:https://pan.baidu.com/s/1Pk_aI_PRbqRFP9i3o9Xodg 提取码:o4o4 1.1. 数据库 1.1.1. 使用navicat创建数据库连 ...