Java基础第20节

本文探讨了Java中的装箱与拆箱概念,即基本数据类型如何通过包装类转换,并介绍了单例模式的应用。同时,讲解了接口与抽象类的区别和特点,以及它们在面向接口编程中的作用。通过实例展示了接口的实现和抽象类的使用,以及实际开发中的应用场景,如工厂模式和设备管理。
摘要由CSDN通过智能技术生成

包装类

装箱和拆箱

装箱:基本数据类型—>包装类

public static valueOf(type value)静态工厂方法

静态工厂方法是专门用来创建对象的一个静态方法,功能上与构造器一样,都是用来创建对象的。

获取一个类的实例对象,有两条路可选:

1.构造器

2.静态工厂方法

区别:

1.静态方法可以有自定义的名字。

2.静态方法在需要的情况下可以保证单例模式。

什么是单例模式

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。

  • 1、单例类只能有一个实例。
  • 2、单例类必须自己创建自己的唯一实例。
  • 3、单例类必须给所有其他对象提供这一实例。

**主要解决:**一个全局使用的类频繁地创建与销毁。

**何时使用:**当您想控制实例数目,节省系统资源的时候。

**如何解决:**判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

拆箱:包装类-》基本数据类型

Boolean boo = Boolean.valueOf("true");//装箱
boolean boo=boo.booleanValue();//拆箱

接口

接口就是某个事物对外提供的一些功能的说明

面向接口编程的优点:

1.解耦

2.使程序易于扩展。

3.有利于程序的后期维护。

接口抽象类
关键字interfaceabstract
方法JDK1.8 以前只有抽象方法(public abstract)、JDK1.8之后还包含默认方法(default)、静态方法(static)(修饰符只能为public或者protected,默认为public)抽象方法abstract不可省、普通方法、构造方法(不能用于实例化,主要用途是被子类调用)
成员变量默认为public static final,必须赋初值,不能被修改。默认default,可在子类中被重新定义,也可被重新赋值。
实现,子接口/子类子接口可以实现多个接口实现多继承。类实现该接口(含抽象方法)则实现方法,否则也定义为抽象类。子类继承抽象类(含抽象方法)则实现方法,否则也定义为抽象类。
特性解决了java单继承的局限性接口强调特定功能的实现抽象类强调所属关系。
相同点(1)都不能被实例化(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
## 接口
public interface Person{
    //成员变量
  public static final int a=10;
  //默认default方法
    default void sayHello(){
        System.out.println("Hello World");
    }
    //抽象方法
    public void say();
    //静态方法
    public static void work(){
        
    }
}

## 抽象类
public abstract class Person{
    //抽象方法abstract不能省
  public/protected abstract void say();
    //普通方法
  public void eat(){}
    //构造方法
    public MyClass(){}
    //属性
    public int weight;
}

面向接口编程的实际应用

面向对象编程 OOP 是一种思想,面向接口编程是一种具体的开发方式。

工厂生产产品A,需要用设备A来生产

Factory、EquipmentA

public class EquipmentA {
    public void work(){
        System.out.println("设备A运行,生产产品A...");
    }
}
public class Factory {
    private EquipmentA equipmentA;

    public EquipmentA getEquipmentA() {
        return equipmentA;
    }

    public void setEquipmentA(EquipmentA equipmentA) {
        this.equipmentA = equipmentA;
    }

    public void produce(){
        System.out.println("开始生产...");
        this.equipmentA.work();
    }
}
public class Test {
    public static void main(String[] args) {
        EquipmentA equipmentA = new EquipmentA();
        Factory factory = new Factory();
        factory.setEquipmentA(equipmentA);
        factory.produce();
    }
}

工厂接了新订单,生产产品B,必须由设备B来生产,工厂中只能有一台设备。

public interface Equiment {
    public void work();
}
public class Factory {
    private Equiment equiment;

    public Equiment getEquiment() {
        return equiment;
    }

    public void setEquiment(Equiment equiment) {
        this.equiment = equiment;
    }

    public void produce(){
        System.out.println("开始生产...");
        this.equiment.work();
    }
}
public class Test {
    public static void main(String[] args) {
        EquipmentA equipmentA = new EquipmentA();
        EquipmentB equipmentB = new EquipmentB();
        EquipmentC equipmentC = new EquipmentC();
        Factory factory = new Factory();
        factory.setEquiment(equipmentC);
        factory.produce();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

spider-clown

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值