java笔记(6) 抽象类和接口

abstract

由abstract关键字修饰的类称为抽象类,可以将某些类共有的行为抽象出来,形成约束,提高开发效率。

//抽象类
public abstract class Action{
  //抽象方法,只有方法名字,没有方法的实现
  public  abstract void doSth();
}
  1. 抽象类不可以通过new关键字创建实例
  2. 抽象类中可以有普通方法
  3. 抽象方法必须在抽象类中
  4. 抽象类可以有构造方法,但只在子类创建实例时调用

interface

使用interface 创建 的类称为接口。
在普通类中只有具体实现;抽象类中,具体实现和规范(抽象方法)都有;而在接口中只有规范,没有具体实现,将约束和实现分离。
接口中定义的属性默认都被final修饰的静态属性,且访问限制为public
接口中定义的方法默认是抽象的,且访问限制为public

interface UserService{
  //public 和 final static是多余的
  public final static int num = 1001;
  //public 和 abstract是多余的,在interface中,不需要额外声明访问限制和抽象类,默认都是public和abtract
  public abstract void run(String name);
  
interface TimerService{
  void add(int t);
  //这不是普通的方法,这实际上是为该方法定义了默认行为,该方法可以被正常重写,访问限制也默认是public。
  //实现该接口的类可以选择不重写该方法,可以直接调用
  default void saySth(Stirng words){
    System.out.println("Saying "+words);
  }
} 

接口需要有实现类,一个类想要实现一个接口,需要通过implement关键字。一旦实现了某个接口,就必须实现接口中的方法。一个类可以同时实现多个接口。

class UserServiceImpl implements UserService,TimerSerice{
  //UserServiceImpl类实现了两个接口,就必须同时实现这两个接口中的方法
  public void run(String name){
    System.out.println(name);
  }
  public void run(int t){
  	//该方法没有被实现,但可以直接调用
  	saySth("Hello");
    System.out.println(t);
  }
}

热门相关:地球第一剑   人间欢喜   情生意动   霸皇纪   刺客之王