抽象类及接口

abstract 抽象类

有时父类中并不需要去用这个方法,只是子类中有需要,当然,也可以不把这个方法定义为抽象的,但这样会不太好,也没有必要,这种写法已经成为默认的了。而且,写这个方法在你看别人的代码或别人看自己的代码时会注意到这个方法不会在父类中用,其必须在子类中重写并运用,会给别人提示的作用

public abstract class Action {}

抽象方法,只有方法名字,没有方法的实现

public abstract void doSth();

抽象类的所有方法,继承了他的子类,都必须实现他的方法(通过方法重写实现),除非子类也是抽象类,就让子子类去实现

抽象类特点

  1. 不能new这个抽象类,只能靠子类去实现他
  2. 有抽象方法必须为抽象类,抽象类中可以写普通方法

接口

接口是一种特殊的抽象类

接口可以多继承

关键字interface,接口都需要有实现类

普通类:只有具体实现

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

接口:只有规范,自己无法写方法。专业的约束。可以实现约束和实现分离:面向接口编程

接口本质是契约,指定好后必须遵守

public interface UserService {
    //接口中的所有定义其实都是抽象的   默认public abstract
    //返回值类型+方法名  就ok
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);

    //也可以定义常量  public static final
    int age=99;
}
public interface TimeService {
    void timer();
}

implements+接口

//类可以实现接口 implement 接口
//实现了接口的类,就需要重写接口中的方法
public class UserServiceImpl implements UserService,TimeService{//UserService,TimeService 多继承
    @Override
    public void add(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void query(String name) {

    }

    @Override
    public void timer() {

    }
}

接口继承接口

interface A extends B{}

作用

  1. 约束
  2. 定义一些方法,让不同的人实现
  3. 接口不能被实例化,没有构造方法
  4. implements可以实现多个接口
  5. 必须重写接口中的方法

接口运用

//创建接口
interface Printable{
    public void draw();//接口的抽象方法,需被子类重写
}

//四边形类
class Quadrangle{
    public void doAnything(){
        System.out.println("四边形提供的方法");
    }
}

//平行四边形类,继承四边形类,实现了接口
class Parallelogram extends Quadrangle implements Printable{
    public void draw(){
        System.out.println("绘制平行四边形");
    }
}

//正方形类,继承四边形类,实现了接口
class Square extends Quadrangle implements Printable{
    @Override
    public void draw() {
        System.out.println("绘制正方形");
    }
}

//圆形类,仅实现了接口
class Circular implements Printable{
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

public class Demo01 {
    public static void main(String[] args) {
        Square s=new Square();
        s.draw();
        s.doAnything();
        Parallelogram p=new Parallelogram();
        p.draw();
        p.doAnything();
        Circular c = new Circular();
        c.draw();
    }
}
/*输出
绘制正方形
四边形提供的方法
绘制平行四边形
四边形提供的方法
绘制圆形
 */

posted @ 2021-07-21 17:29  valder-  阅读(49)  评论(0)    收藏  举报