java學習筆記(介面)
阿新 • • 發佈:2019-01-03
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