java关键字-abstract_interface,用来修饰:类、方法

开发者训练营官方
发布于 2021-3-30 10:47
浏览
1收藏

1. abstract关键字
当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。我们都知道,父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化。这样,抽象类也就诞生了。

abstract:抽象的,可以用来修饰:类、方法。

1.1 abstract的使用
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为抽象类。
抽象类

此类不能实例化
抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)
开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作 —>抽象的使用前提:继承性
如果一个方法使用 abstract 来修饰,则说明该方法是抽象方法,抽象方法只有声明没有实现。需要注意的是 abstract 关键字只能用于普通方法,不能用于 static 方法或者构造方法中。
抽象方法

  • 抽象方法只方法的声明,没方法体
  • 包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法的。
  • 若子类重写了父类中的所的抽象方法后,此子类方可实例化
  • 若子类没重写父类中的所的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰
    1.2 需要注意
    abstract不能用来修饰:属性、构造器等结构
    abstract不能用来修饰私有方法、静态方法(静态方法不能被重写,抽象方法不能调用)、final的方法、final的类
    1.3 abstract应用举例
    public abstract class Employee
    {
       private String name;
       private String address;
       private int number;
       public Employee(String name, String address, int number)
       {
          System.out.println("Constructing an Employee");
          this.name = name;
          this.address = address;
          this.number = number;
       }
       public double computePay()
       {
         System.out.println("Inside Employee computePay");
         return 0.0;
       }
       public void mailCheck()
       {
          System.out.println("Mailing a check to " + this.name
           + " " + this.address);
       }
       public String toString()
       {
          return name + " " + address + " " + number;
       }
       public String getName()
       {
          return name;
       }
       public String getAddress()
       {
          return address;
       }
       public void setAddress(String newAddress)
       {
          address = newAddress;
       }
       public int getNumber()
       {
         return number;
       }
    }​

    2. interface关键字
    关键字:interface–接口

2.1 interface关键字简述
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

  • 接口使用interface来定义
  • Java中,接口和类是并列的两个结构
    2.2 interface关键字使用说明
     
  1. 如何定义接口:定义接口中的成员
  2. 接口中不能定义构造器的!意味着接口不可以实例化
  3. Java开发中,接口通过让类去实现(implements)的方式来使用。如果实现类覆盖了接口中的所抽象方法,则此实现类就可以实例化。如果实现类没覆盖接口中所的抽象方法,则此实现类仍为一个抽象类
  4. Java类可以实现多个接口 —>弥补了Java单继承性的局限性。格式:class AA extends BB implements CC,DD,EE
  5. 接口与接口之间可以继承,而且可以多继承
  6. 接口的具体使用,体现多态性
  7. 接口,实际上可以看做是一种规范
    2.3 interface使用举例
    //不同的设备通过USB口接入电脑
    class Computer{
     
     public void transferData(USB usb){//USB usb = new Flash();
      usb.start();
      
      System.out.println("具体传输数据的细节");
      
      usb.stop();
     }
     
     
    }
    
    interface USB{
     //常量:定义了长、宽、最大最小的传输速度等
     
     void start();
     
     void stop();
     
    }
    
    class Flash implements USB{
    
     @Override
     public void start() {
      System.out.println("U盘开启工作");
     }
    
     @Override
     public void stop() {
      System.out.println("U盘结束工作");
     }
     
    }
    
    class Printer implements USB{
     @Override
     public void start() {
      System.out.println("打印机开启工作");
     }
    
     @Override
     public void stop() {
      System.out.println("打印机结束工作");
     }
     
    }​

    使用总结:

接口使用上也满足多态性
接口,实际上就是定义了一种规范
开发中,体会面向接口编程!
————————————————
版权声明:本文为博主「shuai_举」的原创文章

分类
已于2021-3-30 10:48:17修改
收藏 1
回复
举报
回复
    相关推荐