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关键字 // ...
随机推荐
- 慕课零基础学java语言翁恺老师——第一周编程题
温度转换(5分) 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度. 程序的输入是一个整数,表示华氏温度.输出 ...
- Codis的安装配置
codis是分布式redis解决方案 centos系统下安装codis需要安装相关的依赖,将图中的依赖上传至centos系统中 依次进行安装: 一.go环境的安装配置 解压到install目录下: . ...
- selenium + python 环境配置 (一)
超级无敌菜鸟 终于有空学习一下python 和 selenium 啦 第一步: 环境配置 (Windows版) 1. 下载安装python 根据你的电脑,下载一个python吧 这儿装的是pyt ...
- CTO(技术总监 张王岩 17805272076)之 SSH(安全外壳协议)
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是较可靠,专为远程登录会话和 ...
- Linux中查找最耗CPU的Java代码问题
第一步: 查看消耗CPU最高的进程PID [lolaage@web2 tomcat-ns]$ top top - 13:23:32 up 42 days, 19:11, 3 users, load ...
- vue+element-ui 实现table单元格点击编辑,并且按上下左右键单元格之间切换
通过我的测试我发现两个两种方法来编辑单元格的内容 第一种点击编辑: 我是给td里添加一个input,将值赋值给input,当失去焦点的时候将input的值付给td原来的内容,然后将input删除, 代 ...
- Java的设计模式(3)--工厂模式
工厂模式是定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到子类. 工厂模式涉及四种角色: 抽象产品(Product):抽象类或者接口,负责定义具体产品必须实现的方法 ...
- Spring (3)框架
Spring第三天笔记 今日内容 Spring的核心之一 - AOP思想 (1) 代理模式- 动态代理 ① JDK的动态代理 (Java官方) ② CGLIB 第三方代理 (2) AOP思想在Spr ...
- Warning: popen() has been disabled for security reasons in OS/Guess.php on line 241
今天使用pecl install swoole命令编译安装swoole的时候提示:Warning: popen() has been disabled for security reasons in ...
- Mysql高可用集群环境介绍
MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...