* --總結JAVA抽象類和接口* 1.抽象類:* 1》抽象類可以修飾方法,修飾類,但不能修飾屬性,不能被實例化* 2》抽象類可以被繼承,只能是單繼承,繼承抽象類必須實現抽象方法* 3》抽象類不能被static ,fina,PRivate一起修飾* 4》抽象類是有多態性的** 2.接口:* 1》接口是一種特殊的抽象類,不能被實例化* 2》接口申明的屬性默認關鍵字為public abstract static* 3》接口申明的方法默認關鍵字為 public abstract* 4》接口是可以被繼承的,接口可以被繼承多個,也可已繼承多個* 5》接口是有多態的*
package come.java.zhangfan.test3;public class Test { public static void main(String[] args) { Students s =new Students(); t1(s);//輸出 --- woshi Student T t =new T(); t(t); } //抽象類的多態性 public static void t1(Person p ){ p.T(); } //接口的多態性 public static void t(Runner p){ p.run();//輸出 - -- woshi Run }}//抽象類的應用//申明抽象類abstract class Person{// 字段 i 的修飾符不合法;只允許使用“公用”、“受保護”、“私有”、“靜態”、“終態”、“瞬態”或“易變”// 屬性無法被覆蓋// abstract int i ; // 類型 Person 中的抽象方法 T 只能設置可視性修飾符“公用”或“受保護”中的一個// 如果static 那么意味著可以不創建對象直接調用該方法,與abstact 沖突// abstract static public void T(); // 類型 Person 中的抽象方法 T 只能設置可視性修飾符“公用”或“受保護”中的一個// 本身就沖突,不解釋// abstract final public void T(); // 類型 Person 中的抽象方法 T 只能設置可視性修飾符“公用”或“受保護”中的一個// 私有方法無法被覆蓋// abstract private void T(); abstract public void T(); //True}//申明一個Student類繼承抽象類,并重寫T方法class Students extends Person{ public void T(){ System.out.println("woshi Student"); }}//接口的應用interface Runner{ public abstract void run();}interface Swimmer{ void swim();}interface Flier { void fly();}//接口可以多繼承interface t extends Runner,Swimmer,Flier{ }//必須申明所有繼承的方法class t1 implements t{ @Override public void run() { // TODO 自動生成的方法存根 } @Override public void swim() { // TODO 自動生成的方法存根 } @Override public void fly() { // TODO 自動生成的方法存根 } }//接口可以多引用//必須申明所有繼承的方法class T implements Flier,Runner,Swimmer{ @Override public void fly() { // TODO 自動生成的方法存根 System.out.println("woshi fly"); } @Override public void swim() { // TODO 自動生成的方法存根 System.out.println("woshi Swim"); } @Override public void run() { // TODO 自動生成的方法存根 System.out.println("woshi Run"); } }新聞熱點
疑難解答