熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java裡如何實現多繼承

2013-11-23 19:17:30  來源: Java核心技術 

  接口(interface)接口被用來建立類與類之間關聯的標准
    Java code
    public interface ITest{
          public void test();
    }
    public class TestImpl implements ITest{
          public void test(){
                 Systemoutprintln(test);
          }
    }

  抽象類(abstract class)只要類中有一個抽象方法此類就被標記為抽象類實際上抽象類除了被繼承之外沒有任何意義

  區別
    接口是公開(public)的裡面不能有私有的方法或變量是用於讓別人使用的實現接口的一定要實現接口裡定義的所有方法
    而抽象類是可以有私有方法或私有變量的實現抽象類可以有選擇地重寫需要用到的方法但是必須實現裡面所有的抽象方法
    抽象類在 Java 語言中表示的是一種繼承關系一個類只能使用一次繼承關系
    但是一個類卻可以實現多個interface(java中實現多重繼承的方法之一)
    抽象類中可以有自己的數據成員也可以有非abstarct的成員方法
    而在接口中只能夠有靜態的不能被修改的數據成員(也就是必須是 static final的不過在 interface中一般不定義數據成員)而且所有的成員方法都是抽象的
    抽象類和接口所反映出的設計理念不同
    其實abstract class表示的是isa關系interface表示的是likea關系(組合是has a關系)
    接口中定義的變量默認是public static final 型且必須給其初值所以實現類中不能重新定義也不能改變其值
    抽象類中的變量默認是 friendly 型其值可以在子類中重新定義也可以重新賦值

  一般的應用裡最頂級的是接口然後是抽象類實現接口最後才到具體類實現不是很建議具體類直接實現接口的還有一種設計模式是面向接口編程而非面向實現編程

  其實接口是抽象類的延伸可以將它看做是純粹的抽象類就是說接口比抽象類還抽象還有設計接口的目的就是為了實現C++中的多重繼承不過java團隊設計的一樣更有趣的東西來實現這個功能那就是內部類(inner class)

  內部類(inner class)
    Java code
    public class OuterClass{//外部類
           private class InnerClass{}//內部類
    }

  一定義
    放在一個類的內部的類我們就叫內部類
    二作用
    內部類可以很好的實現隱藏也就是封裝性一般的非內部類是不允許有 private 與protected權限的但內部類可以
    內部類擁有外圍類的所有元素的訪問權限
    可是實現多重繼承(這個特點非常重要個人認為它是內部類存在的最大理由之一)
    可以避免修改接口而實現同一個類中兩種同名方法的調用
    三多重繼承的實現

  類一
    Java code
    public   class  Example {

  public  String getName()  {
           return   luffyke ;
       }
    }

  類二
    Java code
    public   class  Example {

  public   int  getAge()
           {
                return   ;
           }
    }

  類三

  Java code
    public class MainExample {

  public class Test extends Example {
            public String getName() {
                return supergetName();
            }
        }

  public class Test extends Example {
            public int getAge() {
                return supergetAge();
            }
        }

  public String showName() {
            return new Test()getName();
        }

  public int showAge() {
            return new Test()getAge();
        }

  public static void main(String args[]) {
            MainExample example = new MainExample();
            Systemoutprintln(姓名: + exampleshowName());
            Systemoutprintln(年齡: + exampleshowAge());
        }
    }

  大家注意看類三裡面分別實現了兩個內部類 Test和Test Test類又繼承了ExampleTest繼承了Example這樣我們的類三MainExample就擁有了Example和 Example的方法和屬性也就間接地實現了多繼承


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26594.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.