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