package edu.javase.buffer;
abstract class abs {
    abstract void fun1();// 抽象方法
    abstract void fun2();
    public void method() {
        System.out.println("in  abstract   using");
    }
    public void method2() {
        System.out.println("class abs  method2  ...");
    }
}
interface face1 {
    public void facefun1();
}
interface face2 {
    public void facefun2();
}
public class abstractdemo extends abs implements face1, face2 {
    public static void main(String[] args) {
        abstractdemo a = new abstractdemo();
        a.fun1(); // 抽象实现
        a.facefun1();// 接口实现
        a.method();// 抽象实现方法
        a.method2();// 抽象实现方法
    }
    // 重写抽象实现方法
    public void method2() {
        System.out.println("class abstractdemo  method2  ...");
    }
    // 必须实现抽象方法
    @Override
    void fun1() {
        System.out.println("fun1");
    }
    @Override
    void fun2() {
        System.out.println("fun2");
    }
    // 必须实现接口方法
    @Override
    public void facefun1() {
        System.out.println("facefun1");
    }
    @Override
    public void facefun2() {
        System.out.println("facefun2");
    }
}/*
 * output:
fun1
facefun1
in  abstract   using
class abs  method2  ...
 */// :~