zoukankan      html  css  js  c++  java
  • 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 程序的扩展力再一次提高

  • 相关阅读:
    HashMap深度解析:一文让你彻底了解HashMap
    阿里十年技术大咖,教你如何分析1.7中HashMap死循环
    HashMap 底层实现、加载因子、容量值及死循环
    HashMap为什么是线程不安全的
    一文搞定HashMap的实现原理和面试
    @面试中常问的List去重问题,你都答对了吗?
    不按套路出牌,HashMap负载因子超过1会怎样?
    HashMap是如何工作的
    Jdk7与Jdk8 中的 HashMap 和 ConcurrentHashMap 全解析
    深入理解HashMap+ConcurrentHashMap的扩容策略
  • 原文地址:https://www.cnblogs.com/evething-begins-with-choice/p/12797459.html
Copyright © 2011-2022 走看看