接口:
接口:
接口是一种行为的抽象。
接口可以看做是抽象类的特例。
抽象类中可以有抽象方法,可以有具体方法。
但接口中只能有抽象方法。
定义接口使用interface。
实现接口使用implements。
接口中定义的方法都是抽象方法,修饰符为public abstract。即使不写,也是公共的抽象方法。
public interface Iwash {
public void wash();
}
class Mum implements Iwash{
@Override
public void wash() {
System.out.println("用搓衣板洗");
}
}
class Washer implements Iwash{
@Override
public void wash() {
System.out.println("用电机搅动");
}
}
public class IwashTest {
public static void main(String[] args){
Iwash s =new Mum();
s.wash();
}
}
如果一个方法参数为接口类型,意味着可以传递该接口的任何实现类对象。
public class Son {
public void clearCoat(Iwash s ) {
s.wash();
}
}
public class IwashTest {
public static void main(String[] args){
// Iwash s =new Mum();
// s.wash();
Son s = new Son();
s.clearCoat(new Washer());
}
}
接口中可以定义变量,其修饰符是 public static final (公共静态常量)
接口可以继承接口。同时可以继承多个接口。一个类实现一个接口,不但要实现该接口中定义的抽象方法,而且要实现该接口 父 接口中定义的抽象方法。
抽象类和接口的区别:
- 抽象类和接口都不能直接实例化。
- 抽象类中可以有抽象方法,也可以有具体方法。但是接口中只能有抽象方法。
- 抽象类中定义的变量是普通属性。但是接口中定义的变量是公共的,静态的常量。
- 一个类只能继承一个抽象类,但可以实现多个接口。
一个类实现一个接口,可以不完成实现接口中定义的抽象方法,但这个类只能是抽象类。同样,一个类继承一个抽象类,也可以不实现抽象类中定义的抽象方法,这个类也必须是抽象类。
一个类继承一个父类,由于子类对象包含一个完整的父类对象,所以可以继承父类中所有的方法和属性,包括私有方法和私有属性。但是私有方法和私有属性不能被子类直接访问,可以通过父类公有方法进行访问。(建立一个公有的方法,返回属性)
如果一个方法声明为私有的private,那么该方法默认修饰为final。也就是该方法不能被子类所重写。
一个方法的参数如果是父类类型,调用该方法时,可以传递任何一个子类对象。一个方法的参数如果是接口类型,表示调用该方法时,可以传递任何一个实现类对象。