13-Java面向物件-抽象類與介面
阿新 • • 發佈:2021-10-11
finall關鍵字:
→final宣告的類不能被繼承,類似太監
final宣告的類不能被重寫:
→
使用final宣告的變數變成常量,常量不可以被修改:
→
JAVA抽象類:
抽象類不能直接被例項化:
abstract class Abs{ private int age; public void tell(){ } //抽象方法 public abstract void say(); public abstract void print(); publicvoid setAge(int age){ this.age = age; } public int getAge(){ return age; } } class AbsDemo extends Abs{ public void say(){ System.out.println(getAge()); } } public class AbsDemo01{ public static void main(String[] args){ // Abs a = new Abs(); AbsDemo a = newAbsDemo(); a.setAge(20); a.say(); a.print(); } }
介面的實現也必須通過子類,使用關鍵字implements:
package com.jikexueyuan.fin; interface Inter{ public static final int AGE = 100; public abstract void tell(); } class A implements Inter{ public void tell(){ } }public class InterDemo01 { public static void main(String[] args){ //Inter i = new Inter(); //不能直接而是要通過子類implements來使用 A a = new A(); a.tell(); System.out.println(Inter.AGE); } }
介面也是可以多實現:
package com.jikexueyuan.fin; interface Inter1{ public static final int AGE = 100; public abstract void tell(); } interface Inter2{ public abstract void say(); } class A implements Inter1,Inter2{ public void tell(){ } public void say(){ } } public class InterDemo01 { public static void main(String[] args){ //Inter i = new Inter(); //不能直接而是要通過子類implements來使用 A a = new A(); a.tell(); System.out.println(Inter.AGE); a.say(); } }
一個子類可以同時繼承抽象類和實現介面:
package com.jikexueyuan.fin; interface Inter1{ public static final int AGE = 100; public abstract void tell(); } interface Inter2{ public abstract void say(); } class Abs1{ public abstract void print(); } class A extends Abs1 implements Inter1,Inter2{ public void tell(){ } public void say(){ } public void print(){ } } public class InterDemo01 { public static void main(String[] args){ //Inter i = new Inter(); //不能直接而是要通過子類implements來使用 A a = new A(); a.tell(); System.out.println(Inter.AGE); a.say(); a.print(); } }
一個介面不能繼承一個抽象類,但是可以通過extends關鍵字同時繼承多個介面,實現介面的多繼承: