java学习之路 之 高级类特性2-接口(interface)-练习题

    xiaoxiao2025-04-02  6

    // 接口通常用形容词来描述 , 用以描述一种能力. public interface Flyer { // 接口 : 是对事物行为的抽象定义, 接口中只允许抽象方法,和全局常量 public static final int num = 10; public void takeOff(); public abstract void fly(); public void land(); } class Plane implements Flyer { // 具体类可以实现接口, 意味着要实现接口中的所有抽象方法 @Override public void takeOff() { System.out.println("划行2小时"); } @Override public void fly() { System.out.println("飞机飞行中..."); } @Override public void land() { System.out.println("飞机着陆, 耳朵不舒服"); } } abstract class Pet2 { // 可以包含属性, 构造器,普通方法, 抽象方法 private String name; private int age; private double weight; public Pet2() {} public Pet2(String name, int age, double weight) { this.name = name; this.age = age; this.weight = weight; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } public void setWeight(double weight) { this.weight = weight; } public double getWeight() { return weight; } @Override public String toString() { return "名字:" + name + ",年龄:" + age + ",体重:" + weight; } // 抽象方法 : 只有方法签名没有方法体, 被abstract修饰 public abstract void speak(); public abstract void eat(); } class Bird extends Pet2 implements Flyer { // 一个具体类同时继承父类并实现接口 private int flySpeed; public Bird() {} public Bird(String name, int age, double weight, int flySpeed) { super(name, age, weight); this.flySpeed = flySpeed; } public void setFlySpeed(int flySpeed) { this.flySpeed = flySpeed; } public int getFlySpeed() { return flySpeed; } @Override public String toString() { return super.toString() + ",飞行速度:" + flySpeed; } @Override public void speak() { System.out.println("吱吱吱.."); } @Override public void eat() { System.out.println("小鸟吃大虫"); } @Override public void takeOff() { System.out.println("直接就飞,真痛快"); } @Override public void fly() { System.out.println("想往哪儿飞"); } @Override public void land() { System.out.println("电线杆就行"); } } class FlyerTest3 { public static void main(String[] args) { Pet2 pet = new Bird("小飞", 2, 0.5, 30); pet.eat(); //pet.fly(); 在Pet2类中并未定义fly() Flyer flyer = (Flyer)pet; flyer.fly(); } } class FlyerTest2 { public static void main(String[] args) { Pet2 pet = new Bird("小飞", 2, 0.5, 30); /* pet.eat(); pet.fly(); pet.land(); Flyer f = pet; // 多态 //f.eat(); f.takeOff(); */ } } class FlyerTest { public static void main(String[] args) { //Flyer f = new Flyer(); Flyer f = new Plane(); System.out.println(f.toString()); // 不存在一个纯的接口对象. f.takeOff(); f.fly(); f.land(); } } //定义一个接口用来实现两个对象的比较。 interface CompareObject{ public int compareTo(Object o); //若返回值是0, 代表相等;若为正数,代表当前对象大;负数代表当前对象小 } //定义一个Circle类。 class Circle { private double radius; public Circle() {} public Circle(double radius) { this.radius = radius; } public void setRadius(double radius) { this.radius = radius; } public double getRadius() { return radius; } @Override public String toString() { return "半径:" + radius; } } /* 定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类 中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。 */ class ComparableCircle extends Circle implements CompareObject { public ComparableCircle() {} public ComparableCircle(double radius) { super(radius); } @Override public String toString() { return super.toString(); } @Override public int compareTo(Object o) { return (int)(((Circle)o).getRadius() - getRadius()); } } //定义一个Rectangle类。 class Rectangle { private double length; private double width; public Rectangle() {} public Rectangle(double length, double width) { this.length = length; this.width = width; } public void setLength(double length) { this.length = length; } public double getLength() { return length; } public void setWidth(double width) { this.width = width; } public double getWidth() { return width; } @Override public String toString() { return "矩形长:" + length + ",宽:" + width; } } /* 定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类 中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。 */ class ComparableRectangle extends Rectangle implements CompareObject { public ComparableRectangle() {} public ComparableRectangle(double length, double width) { super(length, width); } @Override public String toString() { return super.toString() + ",的矩形的面积"; } @Override public int compareTo(Object o) { return (int)(((Rectangle)o).getLength() * ((Rectangle)o).getWidth() - getLength() * getWidth()); } } /* 定义一个测试类TestInterface,创建两个ComparableCircle对象,调用compareTo方法比较两个类的半径大小。 */ public class TestInterface { public static void main(String[] args) { CompareObject c1 = new ComparableCircle(5.0); CompareObject c2 = new ComparableCircle(6.5); int i = c1.compareTo(c2); if (i > 0) { System.out.println(c2 + " 大于 " + c1); } else if (i < 0){ System.out.println(c2 + " 小于 " + c1); } else { System.out.println(c2 + " 等于 " + c1); } CompareObject c3 = new ComparableRectangle(5.0,8.0); CompareObject c4 = new ComparableRectangle(5.5,4.0); int j = c3.compareTo(c4); if (j > 0) { System.out.println(c4 + " 大于 " + c3); } else if (j < 0){ System.out.println(c4 + " 小于 " + c3); } else { System.out.println(c4 + " 等于 " + c3); } } } public interface USB { public void connect(); public void work(); public void disconnect(); } abstract class Device { private static int currentID = 1; private final int ID; private String name; { ID = currentID++; } public Device() { } public Device(String name) { this.name = name; } /* public void setID(int ID) { this.ID = ID; }*/ public int getID() { return ID; } public void setName(String name) { this.name = name; } public String getName() { return name; } @Override public String toString() { return "ID:" + ID + ",设备名称:" + name; } public abstract void startup(); public abstract void shutdown(); } class Udisk extends Device implements USB { public Udisk() {} public Udisk(String name) { super(name); } @Override public void startup() { System.out.println("U盘加电启动"); } @Override public void shutdown() { System.out.println("U盘已经关闭, 可以拔出"); } @Override public void connect() { System.out.println("U盘插入, 容量识别.."); } @Override public void work() { System.out.println("U盘数据复制中...."); } @Override public void disconnect() { System.out.println("U盘拔出.."); } } class Camera implements USB { @Override public void connect() { System.out.println("摄象头插入, 调焦中..."); } @Override public void work() { System.out.println("开录, 请微笑"); } @Override public void disconnect() { System.out.println("录完了, 请拔出"); } } class USBTest2 { public static void main(String[] args) { Device dev = new Udisk("金士顿64G"); dev.startup(); dev.shutdown(); USB usb = (USB)dev; usb.connect(); usb.work(); usb.disconnect(); System.out.println(usb); } } class USBTest { public static void main(String[] args) { USB usb1 = new Udisk(); usb1.connect(); usb1.work(); usb1.disconnect(); USB usb2 = new Camera(); usb2.connect(); usb2.work(); usb2.disconnect(); } }
    转载请注明原文地址: https://ju.6miu.com/read-1297641.html
    最新回复(0)