1. 程式人生 > >java學習筆記(介面)

java學習筆記(介面)

java學習筆記(高琪版)

oop面向物件

關於介面

介面類與抽象類的區別在於介面更加抽象,介面類中只定義了規範,所有由介面寫的類必須按照介面的章程來寫,實現其中提到的所有方法。
全面專業地實現了設計和具體實現的分離,大多工程都是面向介面的程式設計。

定義了兩個介面,第一個有3個定義的變數,其修飾符為:public static final 。。。和兩個方法。
第二個有1個定義的變數和一個方法。
所以在介面中定義的變數必須被 {初始化} 。

package cn.lyr.oop.testInterface;

public interface MyInterface {
    /*
     * 寫一個介面,是可以進行網路活動的裝置的統領
     */
double Max_Price = 12000 ;//The blank final field price may not have been initialized double Min_Price = 200; String name = "InterNet"; public void call(); public double ave(double a,double b); } interface ex{ public static final int weight = 20; public void boom(); }

下面寫了兩個面向這兩個介面的類;其中SamsungGalaxyNote7這個類實現了兩個介面。
實現介面的類可以定義各自的變數並且不需要初始化。



class AppleAir implements MyInterface{
    @Override
    public void call() {
        // TODO Auto-generated method stub
        System.out.println("TCP/IP");
    }

    @Override
    public double ave(double a, double b) {
        // TODO Auto-generated method stub
        double sum = a+b;
        return
sum; } } class SamsungGalaxyNote7 implements MyInterface,ex{ String name = "SAM";//定義自己的變數 @Override public void call() { // TODO Auto-generated method stub System.out.println("BOOM"); } @Override public double ave(double a, double b) { // TODO Auto-generated method stub double mid = (a+b)/2; return mid; } @Override public void boom() { // TODO Auto-generated method stub System.out.println("BOOM! 當量為:"+weight); } }

寫一個測試類
注意:
*同多型一樣,不能建立一個介面類
*如果用介面去new一個新的物件,如a1,它的本質是MyInterface,所以它只能用MyInterface中的變數和方法,即使在SamsungGalaxyNote7 中有BOOM()的方法,也無法呼叫。
*用SamsungGalaxyNote7 new一個新物件,如a2,則可以呼叫所有SamsungGalaxyNote7 中的特有變數和方法,也可以使用介面中的變數。

package cn.lyr.oop.testInterface;

public class test01 {
    public static void main(String[]args){
        MyInterface a1 = new SamsungGalaxyNote7();
        System.out.println(a1.name);//
        a1.call();
        System.out.println (a1.ave(3000, 6200));
        //a1.boom();  

        SamsungGalaxyNote7 a2 = new SamsungGalaxyNote7();
        System.out.println(a2.name);
        System.out.println("min price is:"+a2.Min_Price);
        a2.call();
        System.out.println(a2.ave(2000, 6200));
        a2.boom();


        MyInterface a3 = new AppleAir();
        System.out.println(a3.name);
        a3.call();
        System.out.println(a3.ave(3000, 12000));
        }
    }

println:
InterNet
BOOM
4600.0
SAM
min price is:200.0
BOOM
4100.0
BOOM! 當量為:20
InterNet
TCP/IP
15000.0