抽象类与接口
一、普通类,抽象类,接口的区别
声明:普通类,抽象类和接口都是类
二、抽象类的相关要点
三、接口的相关要点
1.接口里面只能定义常量和抽象方法(限制修饰符会自动赋予)
例
2.要实现接口,就必须实现接口的所有抽象方法
3.某个类实现多个接口时,创建的对象的引用为某一个接口类型时,则该对象只能调用实现此接口的方法,不能调用实现其他接口的方法,如需调用实现其他接口的方法,则需改变对象引用类型。
四、接口中定义静态方法和默认方法(扩展知识。注:此知识点在开发过程中用的少,一般在一些底层源码中使用,一些开源软件会用到
)
1.默认方法
java8之后,允许给接口添加一个非抽象的方法具体实现,只需要使用default关键字即可,这个特征被称为默认方法(或扩展方法)。
例
2.默认方法与抽象方法的区别
例:
public interface Shape {
default void test(){
System.out.println("接口的默认方法");//接口中的默认方法,会继承给实现该接口的子类
}
double size();
}
public class Shape_interface_test {
public static void main(String args[]){
Shape a=new Rectangle(10.0,10.0);
a.test();//父类引用子类对象调用继承接口的默认方法
Rectangle b=new Rectangle(12.0,10.0);
b.test();//子类对象调用继承接口的默认方法
}
}
3.静态方法
public class Test_03_interface_staticfangfa {
public static void main(String args[]){
A.staticmethod(); //静态方法从属于类,用类来调用
B.staticmethod(); //类和接口中定义同名静态方法,这两个方法分别从属于A和B
B b=new B();
b.defaultmethed(); //对象调用继承接口的默认方法
}
}
interface A{
static void staticmethod(){
System.out.println("接口A中的静态方法");//在静态方法中不能调用默认方法
}
default void defaultmethed(){
staticmethod(); //在默认方法中可以调用静态方法
System.out.println("接口A中的默认方法");
}
}
class B implements A{
static void staticmethod(){
System.out.println("类B中的静态方法");
}
}
运行结果如下
四、接口的多继承
继承只能单继承,接口可以多继承
public class Test_04_interface_duojicheng implements C {
public void testA(){} //实现接口C必须实现C中的所有方法
public void testB(){}
public void testC(){}
}
interface A{
void testA();
}
interface B{
void testB();
}
//接口C继承接口A,完成多继承
interface C extends A,B{
void testC();
}