java 接口
今天学习了java中有关于接口的相关知识,在这里整理出来,方便以后复习。
这里先提一句接口的写法:
public interface 接口名称{}
实现接口的写法:
public class 类名 implements 接口名称{}
以下是接口主要的知识点:
1:接口是一种完全的抽象类。
ex:
public abstract double area(); //可以省略:public abstract
double perimeter();//Java会自动帮我们加:public abstract
2:接口中的变量全是常量:public static final
ex:
public static final int MAX=5;
public static final int MAX;//声明时必须赋初值
3:接口自己本身是不能new对象的,只能当做引用来用,引用的实例为实现类对象。
4:一个类要实现接口,必须把接口中所有的抽象方法全部实现,否则就要声明成抽象类,实现类有时我们也把它称为子类。
ex: 写了一个接口为Area:
public interface Area{
public abstract double area( );
}
则实现类Rectanger类要实现接口中所有的抽象方法
public class Rectanger implements Area{
public double area(){
}
}
5:接口当作父类引用来使用,语法就是多态。
ex:
Area g = new Rectangle(20, 15);
System.out.println( g.area() );//多态: 1)编译 2)运行
6:接口本质上是类,它继承自objec,因此通过接口引用可以访问objec的方法。
7:一个类可以同时继承父类(单继承),又实现接口(多实现)
ex:
public class Cuboid extends Rectangle implements Volume{
}
8:注意有些时候,虽然从语法上讲,子类可以调用父类中的方法,但不符合工程需要。
9:一个接口可以继承父接口,且可以多继承。
ex:
public interface AreaVolume extends Area,Volume {
.......
}
10:接口具有封装隔离功能。
ex:
public class Run {
public static void main(String[] args) {
Area g = new Cuboid(10, 20, 30);
System.out.println( g.toString() );
System.out.println( g.area() );
//通过
System.out.println( g.volume() );
//编译时报错 Area接口中没有volume()方法
Volume v = new Cuboid(10, 20, 30);
System.out.println( v.toString());
System.out.println( v.area() );
//编译时多态过不了,olume接口中没有area()方法
System.out.println( v.volume() );
//通过
g = (Area)v; //强转是为了让编译器通过编译时多态
System.out.println("强转之后:"+g.area());//通过
}