Java接口和继承简单综合运用

本文探讨了接口在IT技术中的重要性,包括定义行为规范、促进解耦、支持多态性、模块化编程以及在设计模式和框架设计中的应用。通过实例展示了如何使用接口实现抽象和功能扩展。
摘要由CSDN通过智能技术生成

接口的作用:

  1. 定义行为规范:接口定义了一组方法的签名,但不包含实现细节。这意味着任何实现该接口的类都必须遵循这个行为规范,即提供接口中所有方法的具体实现。这有助于确保代码的统一性和可预测性。

  2. 解耦:接口使得类的实现与使用之间解耦。这意味着一个类可以依赖于接口而不是具体的实现类。这增加了代码的灵活性和可维护性,因为可以在不修改使用接口的代码的情况下替换实现类。

  3. 多态性:接口是实现多态性的关键。通过接口,我们可以编写接受任何实现该接口的对象的代码,而无需关心具体的实现类。这使得代码更加通用和可重用。

  4. 模块化:接口有助于实现模块化编程。通过将功能划分为不同的接口和类,我们可以更容易地组织和管理代码。这有助于提高代码的可读性和可维护性。

  5. 设计模式实现:许多常见的设计模式(如工厂模式、观察者模式等)都依赖于接口来实现。通过定义和使用接口,我们可以更容易地实现这些设计模式,从而提高代码的质量和可维护性。

  6. 扩展性:接口允许我们在不修改现有代码的情况下添加新功能。通过定义新的接口或扩展现有接口,我们可以添加新的方法签名,并让实现类根据需要实现这些方法。

  7. 框架设计:在Java框架设计中,接口也扮演着重要角色。框架通常定义了一组接口,允许开发者实现这些接口以扩展或定制框架的功能。

//能够提供服务

//本题的接口 

public interface Fuction {
    void takePicture();
    void viewing();
}

 //本题的父类

package testall.a03jie;

abstract class Feature {
    private String name;
    private double price;

    public Feature() {
    }

    public Feature(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
    abstract public String getInfo();
}

//两个子类

package testall.a03jie;


public class Camera extends Feature implements Fuction {
    private double zoom;

    public Camera() {}

    public Camera(String name, double price, double zoom) {
        super(name, price);
        this.zoom = zoom;
    }
    @Override
    public void takePicture(){
        System.out.println(this.getName()+"数码相机照相!");
    }
    @Override
    public void viewing(){
        System.out.println(this.getName()+"数码相机浏览照片!");
    }
    @Override
    public String getInfo(){
        return "名称: "+this.getName()+",价格: "+this.getPrice()+",数码相机变焦倍数:"+this.zoom;
    }
    public void printPhoto(){
        System.out.println(this.getName()+"数码相机打印了照片!");
    }
}
package testall.a03jie;

public class Smartphone extends Feature implements Fuction{
    private String OS;

    public Smartphone() {}

    public Smartphone(String name, double price, String OS) {
        super(name, price);
        this.OS = OS;
    }
    @Override
    public void takePicture(){
        System.out.println(this.getName()+"智能手机照相!");
    }
    @Override
    public void viewing(){
        System.out.println(this.getName()+"智能手机浏览照片!");
    }
    @Override
    public String getInfo(){
        return "名称: "+this.getName()+",价格: "+this.getPrice()+",智能手机操作系统:"+this.OS;
    }
    public void passmessage(String message){
        System.out.println(this.getName()+"智能手机发送了短信: "+message);
    }
}

//浅浅测试一下

public class Test {
    public static void main(String[] args) {
        Smartphone phone=new Smartphone("华为",5600,"鸿蒙OS");
        Camera camera=new Camera("爱国者",3500,20);
        System.out.println("-----智能手机-----的信息:"+phone.getInfo());
        System.out.println("-----数码相机-----的信息:"+camera.getInfo());
        phone.takePicture();
        phone.viewing();
        phone.passmessage("Hello world!!!!");
        camera.takePicture();
        camera.viewing();
        camera.printPhoto();
    }
}

//最后结果:

-----智能手机-----的信息:名称: 华为,价格: 5600.0,智能手机操作系统:鸿蒙OS
-----数码相机-----的信息:名称: 爱国者,价格: 3500.0,数码相机变焦倍数:20.0
华为智能手机照相!
华为智能手机浏览照片!
华为智能手机发送了短信: Hello world!!!!
爱国者数码相机照相!
爱国者数码相机浏览照片!
爱国者数码相机打印了照片!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值