Java------抽象类、接口

一、什么是抽象类 

         一个类中只定义了方法但没有定义具体实现的类称之为抽象类,在 java 中通过 abstract 关键字修饰一个类进行定义抽象类,且每个未被定义具体实现的方法也同时被 abstract 修饰并成为抽象方法;

        语法格式:

public abstract class 抽象类名{
        类体;  
       public abstract 返回值类型 抽象方法名(参数列表);  // 抽象方法
}

二、抽象类有什么特点

         调用抽象类是以继承的方式进行的,所以抽象类可以被继承调用(实现),但是抽象类无法进行创建对象,只能生成抽象类一个非抽象的子类后才能创建实例,子类继承抽象类时,要对抽象类中的抽象方法进行实现处理;

         抽象类中可以有非抽象的方法和属性,但是不是抽象类的类无法拥有抽象方法;

    抽象类的创建对象只能以多态的形式父类型指向子类,通过子类来创建一个实例对象;

         抽象类中可以拥有构造方法

 1 public  class Test34 extends Arr {
 2 
 3     // 对抽象类中的抽象方法进行实现
 4     public void f() {
 5         
 6     }
 7     
 8     public static void main(String[] args) {
 9         
10     // 抽象类无法创建对象,只能以多态的形式(父类型指向子类型)创建对象
11         Arr a = new Test34();
12         int o = a.bs;
13         System.out.println(o);
14     }
15 
16 }
17 
18 // 创建了一个抽象类
19 abstract class Arr{
20     
21     int bs = 200;   // 属性
22     abstract void f();  // 抽象方法
23 }
View Code

 

三、什么是接口

        接口是体现抽象类功能的另一种方式,为了更好的说明,就要通过抽象类来解释说明接口,在抽象类中可以拥有变量和其他方法与抽象方法,但是接口却只能拥有抽象方法和变量,其所有的方法读没有任何方法体,所有的方法只能是抽象方法(但不用abstract 修饰),可以看成一个更加纯粹的抽象类,用 interface 关键字来创建接口;

        语法格式:

 [接口修饰符] interface 接口名 [extends 父接口列表]{ ...... // 方法原型或静态常量 } 

四、接口的特点

        1、java 不能实现多继承,但是 java 允许一个类可以实现多个接口,从而实现多继承的能力;

        2、子类调用接口不是叫继承,叫实现,且用 implement 来进行子类对接口的实现,并且 extends 与 implement 可以同时存在并使用;

   3、在子类进行实现接口的过程中,必须对其接口中的方法进行实现;

   4、在接口中定义的成员变量都默认为终极静态变量,即系统会自动添加 fianl 和 static 两个关键字,要对其手动初始化赋值;

        5、与抽象类相同,接口无法创建对象,只能通过继承它的子类来进行多态(父类型指向子类型)来进行创建实例对象;

        6、如果多个接口与同一个子类相关联,那么就可以来测试一个对象是否为一个类的实例,如果为真,两个接口可以强制转换;

 1 public class Test35 extends D implements A,B,C{
 2 
 3     public static void main(String[] args) {
 4     
 5         // 创建对象
 6         A a = new Test35();  // 多态
 7         B b = new Test35();
 8         C c = new Test35();
 9         
10         int x = a.I;
11         System.out.println(x);
12         
13         if (c instanceof A) {
14             System.out.println("yes");
15             a = (A)c;
16         }
17         
18     }
19 
20     public void put1() {
21         
22     }
23     
24     public void put2() {
25         
26     }
27     
28     public void put3() {
29     
30     }
31 
32 }
33 
34 // 创建多个接口
35 interface A{
36     int I = 6;  // 静态变量
37     void put1();
38 }
39 
40 interface B{
41     void put2();
42 }
43 
44 interface C{
45     A I = null;
46 
47     void put3();
48 }
49 
50 class D{
51     public void fun() {
52         
53     }
54 }
View Code

五、接口的作用

         接口的产生,实质上是在类的基础上再抽象类与类之间的相似点,将其共同点组成一个平台,提供给子类使用,其目的还是对 java 程序再一次解耦合,使 java 程序的扩展力再一次提高

原文地址:https://www.cnblogs.com/evething-begins-with-choice/p/12797459.html