1. 程式人生 > >JavaSE—11.抽象類_介面

JavaSE—11.抽象類_介面

抽象類

  • 用abstract關鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾一個方法時,該方法叫做抽象方法
  • 含有抽象方法的類必須被宣告為抽象類,抽象類必須被繼承,抽象方法必須被重寫
  • 抽象類不能被例項化
  • 抽象方法只需宣告,而不需實現
abstract class Animal {
    private String name;
    Animal(String name){
        this.name = name;
    }
   public abstract void enjoy();
}
class Cat extends Animal {
    private
String eyeColor; Cat(String n, String c) { super(n); eyeColor = c; } public void enjoy() { System.out.println("貓叫聲"); } }

final關鍵字

  • final的變數的值不能夠被改變
    • final的成員變數
    • final的區域性變數(無參)
  • final的方法不能夠被重寫
  • final的類不能夠被繼承

介面

  • 多個無關的類可以實現同一個介面
  • 一個類可以實現多個無關的介面
  • 與繼承關係類似,介面與實現類之間存在多型性
  • 介面(interfaace)是抽象方法和常量值得定義的集合
  • 從本質上講,介面是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變數和方法的實現。
  • 定義舉例:
public interface Runner {
    public static final int id = 1;
    public void start();
    public void run();
    public void stop();
}
  • 介面可以多重實現
  • 介面中宣告的屬性預設為public static final的;也只能是public static final的
  • 介面中只能定義抽象方法,而且這些方法預設為public的、也只能是public的
  • 介面可以繼承其他介面,並新增新的屬性和抽象方法
  • 介面舉例:
interface Singer {
    public void sing();
    public void sleep()}
interface Painter {
    public void paint();
    public void eat();
}
class Student implements Singer {
    private String name;
    Student(String name) {
        this.name = name;
    }
    public void study() {
        System.out.println("studying");
    }
    public void sing() {
        System.out.println("student is singing");
    }
    public void sleep() {
        System.out.println("student is sleeping");
    }
    public String getName() {
        return name;
    }
}
class Teacher implements Singer, Painter {
    private String name;
    public String getString() {
        return name;
    }
    Teacher(String name) {
        this.name = name;
    }
    public void teach() {
        System.out.println(“teaching);
    }
    public void sing() {
        System.out.println("teacher is singing");
    }
    public void sleep() {
        System.out.pritln("teacher is sleeping");
    }
    public void paint() {
        System.out.println("teacher is painting");
    }
    public void eat() {
        System.out.println("teacher is eating");
    }
}
public class Test {
    public static void main(String args[]) {
        Singer s1 = new Student("le");
        s1.sing();
        s1.sleep();
        Singer s2 = new Teacher("steven");
        s2.sing();
        s2.sleep();
        Painter p1 = (Painter)s2;
        p1.paint();
        p1.eat();
    }
}