7、 Java接口、类型与类之间的关系、抽象类和接口语法上的区别

接口的基础语法

1、接口也是这一种“引用数据类型”,编译之后会产生class字节码文件。
2、接口是完全抽象的。(抽象类是半抽象的)。或者说接口是特殊的抽象类
3、接口的定义:
[修饰符列表] interface 接口名{}
4、接口支持多继承,一个接口继承多个接口。
5、接口中只包含两部分内容,一部分是:常量。一部分是:抽象数据类型。接口没有其他内容。
6、接口所有元素都是public修饰的。(公开的)
7、接口中的方法不能有方法体。
8、接口中的抽象方法定义时,public abstract 修饰符可以省略
9、接口中的常量的public static final可以省略。
10、类与类之间叫继承,类与接口之间叫做实现。
继承使用extends关键字完成
实现使用implements关键字完成

11、当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖、重写)
12、实现抽象方法的public不能省略。
因为方法重写的权限不能变低。
13、一个类可以同时实现多个接口

interface MyMath1{
    
    
    double PI = 3.1415926;
    int sum(int a, int b);
    int sub(int a,int b);

}

class MyMathImp1 implements MyMath1{
    
    
	/*不加public
	int sum(int a,int b){
	}
	报错: 正在尝试分配更低的访问权限; 以前为public
	*/
    public int sum(int a,int b){
    
    
        return a + b ;
    }
    public int sub(int a,int b){
    
    
        return a - b;
    }

关于接口怎么使用多态继承的例子:

public class Test02 {
    
    
    public static void main(String[] args) {
    
    
        //错误:MyMath1是抽象的,无法实例化
        //new MyMath1();

        //父类型引用指向子类型的对象
        MyMath1 mm = new MyMathImp1();
        int result1 = mm.sum(10,20);
        System.out.println(result1);
        int result2 = mm.sub(20,10);
        System.out.println(result2);

    }


}
interface MyMath1{
    
    
    double  PI = 3.1415926;
    int sum(int a, int b);
    int sub(int a,int b);

}

class MyMathImp1 implements MyMath1{
    
    

    public int sum(int a,int b) {
    
    
     return a + b;
    }

    public int sub(int a,int b){
    
    
        return a - b;
    }


}

如果既有继承又有实现该怎么写代码?
继承在前,实现在后。接口的实现类似于硬件,插上就能用,不插就不能用。

public class Test03 {
    
    
    public static void main(String[] args) {
    
    
        Flyable f = new Cat();
        f.fly();
    }
}
//动物类
class Animal {
    
    

}
//可飞翔的接口
interface Flyable{
    
    
    void fly();
}
//猫类  带有可飞翔接口的猫
class Cat extends Animal implements Flyable{
    
    
    public void fly(){
    
    
        System.out.println("飞猫起飞!");
    }
}

接口的作用:解耦合

1、实现面对接口编程,可以降低程序的耦合度,提高程序的扩展力,复合ocp开发原则。
开闭原则(Open Closed Principle),简称OCP。
软件实体应该对扩展开放,对修改关闭。
2、接口的使用离不开多态机制。(接口+多态才能达到降低耦合度)
3、任何一个接口都有调用者和实现者。接口负责将调用者和实现者解耦合。
调用者面向接口调用,实现者面向接口编写实现。

类型与类之间的关系

is a、has a、like a
is a :
Cat is a Animal
凡是满足is a的表示“继承关系”
has a:
I has a Pen
凡是满足has a关系的表示“关联关系”
关联关系通常以“属性”的形式存在
like a:
Cooker like a FoodMenu
凡是能够满足like a关系的表示“实现关系”
实现关系通常是:类实现接口

抽象类和接口语法上有什么区别?

1、抽象类是半抽象的。
接口是完全抽象的。
2、抽象类中没有构造方法。
接口中没有构造方法。
3、接口与接口之间支持多继承
类与类只能单继承
4、一个类可以同时实现多个接口
一个抽象类只能继承一个类
5、接口中只允许出现常量和抽象方法

猜你喜欢

转载自blog.csdn.net/Alopecian/article/details/114300290