java 接口与实现
Computable.java
public interface Computable {
int MAX = 46;
int f(int x);
}
China.java
public class China implements Computable { //China类实现Computable接口
int number;
public int f(int x) { //不要忘记public关键字
int sum=0;
for(int i=1;i<=x;i++) {
sum=sum+i;
}
return sum;
}
}
Japan.java
public class Japan implements Computable { //Japan类实现Computable接口
int number;
public int f(int x) {
return MAX+x;
}
}
Example6_1.java
public class Example6_1 {
public static void main(String args[]) {
China zhang;
Japan henlu;
zhang=new China();
henlu=new Japan();
zhang.number=32+Computable.MAX;
henlu.number=14+Computable.MAX;
System.out.println("zhang的学号"+zhang.number+",zhang求和结果"+zhang.f(100));
System.out.println("henlu的学号"+henlu.number+",henlu求和结果"+henlu.f(100));
}
}
接口的理解
假如轿车、卡车、拖拉机、摩托车和客车都是机动车的子类,其中机动车是一个抽象类。机动车中有诸如“刹车”、“转向”等方法是合理的,即要求轿车、卡车、拖拉机、摩托车和客车都必须具体实现“刹车”、“转向”等功能。但是机动车类包含有两个抽象类方法“收取费用”、“调节温度”,那么所有子类都要重写这两个方法,即给出方法体,产生各自的的收费获取控制温度的行为。这显然不符合人们的思维逻辑,因为拖拉机可能不需要“”收取费用”、“调节温度”的功能,而其他一些类,如飞机、轮船等可能也需要具体实现“收取费用”、“调节温度”。
接口的思想在于它要求某些类有相同的方法,但方法的具体内容(方法体的内容)可以不同,即要求这些类实现接口,以保证这些类一定有接口中所声明的方法(即所谓的方法绑定)。
Example6_2.java
abstract class MotorVehicles {
abstract void brake();
}
interface MoneyFare {
void charge();
}
interface ControlTemperature {
void controlAirTemperature();
}
class Bus extends MotorVehicles implements MoneyFare {
void brake() {
System.out.println("公共汽车使用毂式刹车技术");
}
public void charge() {
System.out.println("公共汽车:一元/张,不计算公里数");
}
}
class Taxi extends MotorVehicles implements MoneyFare,ControlTemperature {
void brake() {
System.out.println("出租车使用盘式刹车技术");
}
public void charge() {
System.out.println("出租车:2元/公里,起价3公里");
}
public void controlAirTemperature() {
System.out.println("出租车安装了Hair空调");
} }
class Cinema implements MoneyFare,ControlTemperature {
public void charge() {
System.out.println("电影院:门票,十元/张");
}
public void controlAirTemperature() {
System.out.println("电影院安装了中央空调");
}
}
public class Example6_2 {
public static void main(String args[]) {
Bus bus101 = new Bus();
Taxi buleTaxi = new Taxi();
Cinema redStarCinema = new Cinema();
bus101.brake();
bus101.charge();
buleTaxi.brake();
buleTaxi.charge();
buleTaxi.controlAirTemperature();
redStarCinema.charge();
redStarCinema.controlAirTemperature();
}
}
个人理解:一些公共类方法大家都要用到的就继承,一些特殊的就定义一个接口来实现。
class Taxi extends MotorVehicles implements MoneyFare,ControlTemperatur
java 接口与实现的更多相关文章
- java接口调用——webservice就是一个RPC而已
很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...
- java 接口的作用和好处
1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...
- java接口
一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...
- java接口的嵌套
java接口 1.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值 2.接口中的方法默认都是 public abstract ...
- java 接口和抽象类的区别
java 接口和抽象类的区别抽象类:1.含有抽象方法的类一定为抽象类,反过来抽象类,不一定含有抽象方法:2.抽象类必须用abstract来进行定义,抽象方法也必须用abstract来进行定义:3.抽象 ...
- java 接口(上)
1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...
- java接口和抽象类
关于接口 1.创建一个接口,需要使用interface关键字. 2.实现一个接口,需要使用implements关键字. 3.接口的成员属性都是静态常量(默认public static final). ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- 初探设计:Java接口和抽象类何时用?怎么用?
今天犯了个错: “接口变动,伤筋动骨,除非你确定只有你一个人在用”.哪怕只是throw了一个新的Exception.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的 ...
- OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例
转自: http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ...
随机推荐
- Excel教程(3) - 函数输入方法
对 Excel 公式而言,函数是其中的主要组成部分,因此公 式输入可以归结为函数输入的问题. "插入函数"对话框 "插入函数"对话框是 Excel 输入公式的重 ...
- TimeJob权限问题 拒绝访问
internal void RenameWithoutValidation(string value) { if (value == null) throw new ArgumentNullE ...
- MySQL慢日志分析-转载
/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log这会输出记录次数最多的10条SQL语句,其中: -s, 是表示按照何种方式排序,c.t.l ...
- KVM 虚拟化基本搭建
KVM虚拟化技术 KVM是基于x86架构上Linux操作系统的全虚拟化解决方案 ,在Centos6.3系统中,kvm已经被集成到内核中,相当于使用内核来做虚拟机管理程序.由于KVM本身就工作于内核环境 ...
- FZU 1502 Letter Deletion
最长公共子序列. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #i ...
- simHash 简介以及java实现
http://gemantic.iteye.com/blog/1701101 simHash 简介以及java实现 博客分类: 算法 simHash java 去重 传统的hash 算法只负责将原始 ...
- OPENWRT make defconfig错误之一
make defconfig rm: cannot remove `tmp/.host.mk': Permission denied 退到trunk上级目录 su root sudo chown -R ...
- Slice到C++映射
按:本文是DPWI第6章的笔记. 客户端Slice到C++映射定义的是:怎样把Slice数据类型翻译成C++类型,客户怎样调用操作.传递参数.处理错误.C++映射线程安全,不存在内存管理问题.不建议查 ...
- 通过配置的方式Autofac(1)
一.基本配置 1.通过配置的方式使用Autofac <?xml version="1.0"?> <configuration> <configSect ...
- Django:之Sitemap站点地图、通用视图和上下文渲染器
Django中自带了sitemap框架,用来生成xml文件 Django sitemap演示: sitemap很重要,可以用来通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录. 开启si ...