JAVA中的接口
一.接口:是一种标准,是一种规范
1.同一类型得引用,指向不同对象时,有不同的实现(向上造型)
public interface Aoo {
void load();
}
public class Aooimpl implements Aoo{
//实现接口中的load方法;
public void load(){
System.out.println("a pan");
}
public static void main(String[] args) {
//接口--->实现类
Aoo p=new Aooimpl();//向上造型
p.load();
Aoo p1=new Boo();//向上造型
p1.load();
}
}
class Boo implements Aoo{
//实现接口中的load方法;
public void load(){
System.out.println("b pan");
}
}
2.接口是一种数据类型(引用类型)
3.有interface定义,只能包含常量和抽象方法,实现接口只能implements来实现接口
public interface Demointerface {
//public void test(){}//编译错误,因为接口中只能是抽象方法
public abstract void test2();//抽象方法
void test3();//public abstract 编译器会默认提供
int test4();
//int a;//编译错误,因为在接口中不能声明变量
public static final int USER_AGE=55;//常量
int USER_ID=666;
}
4.接口不能被实例化;
public class Demo1 {
public static void main(String[] args) {
//yee p=new yee();//编译错误,接口不能被实体化
}
}
5.接口需要被实现/被继承,实现类/派生类,必须重写接口中的所有方法
public interface moo {
void load();
}
public interface noo extends moo{
int test();
}
class yoo implements noo{
public void load() {
// TODO Auto-generated method stub
}
public int test() {
// TODO Auto-generated method stub
return 0;
}
}
6.一个类用多个接口并用逗号隔开,若有继承也有是现实,先继承再实现
public class Foo extends Goo implements moo,noo{
@Override
public int test() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void load() {
// TODO Auto-generated method stub
}
@Override
public void goodtest() {
// TODO Auto-generated method stub
}
}
7.接口可以继承接口;
public class Doo implements Aoo,Coo{
public void paly() {
System.out.println("coo");
}
public void load() {
System.out.println("aoo");
}
public static void main(String[] args) {
Aoo p=new Doo();
p.load();
Coo p1=new Doo();
p1.paly();
}
}
8.由于继承是单一继承,所有接口弥补了单一继承得这个缺点。
二.继承和实现的设计规则
1.将所有派生类所共有的属性和行为,抽到父类(超类)-----抽共性(父类中);
2.所有派生类的行为都一样,设计为父类中的普通方法;
3.所有派生类的行为都不一样,但是入口是一样的,设计为抽象方法;
4.将部分派生类所有共有的行为,使用接口;
5.接口是对继承的单一性的扩展—实现多个继承;
三.抽象类和接口得区别:
相同点:
1.都不能被实体化
2.接口得实现类和抽象类得子类只有全部实现了接口或者抽象类中的抽象方法才可以被实例化(实现类/派生类);
不同点:
1.抽象类要被子类继承,接口要被实现;
2.接口只能做方法的声明(抽象方法),抽象类中可以做方法的声明(可以有抽象方法),也可以做方法的实现(普通方法);
3.接口里定义的变量只能是公共的静态的常量,抽象类中的变量是成员变量也可以有常量;
4.抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变的常量;
5.接口强调的是功能,抽象类强调的是所属关系;