0
点赞
收藏
分享

微信扫一扫

java基础_抽象类和接口

李雨喵 2022-01-06 阅读 80

java基础_抽象类和接口

1 抽象类和抽象方法

抽象方法: 只有功能声明,没有功能主体实现的方法。

抽象类:包含抽象方法的类叫做抽象类,如果一个类包含一个或多个抽象方法,该类必须被限定为抽象类。

// 抽象方法定义格式
public abstract 返回值类型 方法名(参数);	
// 抽象类定义格式
public abstract class 类名{
    // ...
}

如果A类继承抽象类,那么A类必须为抽象类中所有抽象方法提供方法定义,即重写抽象方法。如果不重写,那么A类也必须声明为抽象类。创建抽象类的目的是通过这个通用接口操纵一系列类。

注:抽象类无法直接创建对象,只能被子类继承后,创建子类对象。

2 接口

接口:是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。即接口是一种特殊的抽象类,里面全部是全局常量公共的抽象方法组成。

接口没有具体实现,可以实现多重继承。将一个具体类和多个接口组合到一起时,具体类必须放到前面,后面才跟着接口。

当类要实现一个接口时,重写的接口方法必须定义为public。

放入接口中的任何域都自动是static和final的

interface Test{
    // public,static and final
    int a = 1;
    // public and abstract
    void display();
    
}

class HelloWrold implements Test{
    @Override
    public void display(){
         System.out.println("Hello world!");
    }
}

3 接口与设计模式

3.1 策略模式

策略模式:创建一个能够根据所传递的参数对象的不同而具有不同行为的方法。策略就是传递进去的参数对象,它包含要执行的代码,下面代码就是一个策略模式的实现。

//: interfaces/classprocessor/Apply.java
package interfaces.classprocessor;
import java.util.*;
import static net.mindview.util.Print.*;

class Processor {
  public String name() {
    return getClass().getSimpleName();
  }
  Object process(Object input) { return input; }
}	

class Upcase extends Processor {
  String process(Object input) { // Covariant return
    return ((String)input).toUpperCase();
  }
}

class Downcase extends Processor {
  String process(Object input) {
    return ((String)input).toLowerCase();
  }
}

class Splitter extends Processor {
  String process(Object input) {
    // The split() argument divides a String into pieces:
    return Arrays.toString(((String)input).split(" "));
  }
}	

public class Apply {
  public static void process(Processor p, Object s) {
    print("Using Processor " + p.name());
    print(p.process(s));
  }
  public static String s ="Disagreement with beliefs is by definition incorrect";
  public static void main(String[] args) {
    process(new Upcase(), s);
    process(new Downcase(), s);
    process(new Splitter(), s);
  }
} /* Output:
Using Processor Upcase
DISAGREEMENT WITH BELIEFS IS BY DEFINITION INCORRECT
Using Processor Downcase
disagreement with beliefs is by definition incorrect
Using Processor Splitter
[Disagreement, with, beliefs, is, by, definition, incorrect]
*///:~

3.2 适配器设计模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

可以参考博客:适配器模式 | 菜鸟教程 (runoob.com)

3.3 工厂模式

在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

可以参考博客:工厂模式 | 菜鸟教程 (runoob.com)

参考内容:

《Java的编程思想》

JAVA基础——接口(全网最详细教程)_扬俊的小屋-CSDN博客_java接口

举报

相关推荐

0 条评论