抽象类&接口&内部类

抽象类

关键字abstract

//抽象类:类,extends
public abstract class Action{
    //约束,后面实现
    //abstract,抽象方法,只有方法名字,没有方法的实现
    public abstract void doSomething();
}

抽象类只能单继承。

特点:

  • 不能实例化抽象类,只能靠子类实现
  • 抽象类可以写普通方法,普通类不能写抽象方法
  • 抽象类不能被new出来,但是存在构造器,被子类调用来完成初始化工作,可以是public、protected修饰符,不能是private。
  • 子类创建一定会调用父类构造器

接口

关键字:interface

普通类:只有具体实现

抽象类:具体实现和规范(抽象方法)都有

接口:只有规范,无法写方法—专业的约束!约束与现实分离:面向接口编程

public interface Demo{
    //接口中所有的定义的方法都是抽象的public abstract
    void add(String name); 
}
   //接口需要有实现类,实现类必须重写接口所有方法
public class test implements Demo{
    @Override
    public void add(String name){
        
    }
}

利用接口可以实现多继承。

接口不能被实例化

内部类

在类中定义类

通过外部类实例化内部类

非静态内部类可以获得外部类的私有属性

静态内部类不可以获得外部类的私有属性

局部内部类,定义在方法中的类