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
时间: 2024-10-14 13:52:46