• Java基础5:抽象类和接口


    本节主要介绍了抽象类和接口的特性和使用方法。

    1.抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder.

    2.接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须按照规定去实现。

    3.另外,一个类可以实现多个接口,但是不能继承多个类。然而接口却可以继承多个其他接口,这一点很神奇。

    下面看一些具体例子,有一些小细节平时可能不会注意:

     1 class A {
     2 
     3 }
     4 interface M extends N,L{//正确的,不会报错
     5 
     6 }
     7 interface N{
     8 
     9 }
    10 interface L{
    11 
    12 }
    13 interface 接口 {
    14     public final int i = 1;//变量默认都为public final修饰
    15     final A a = null;//基本数据类型和引用都一样
    16     //protected void a();//报错
    17     //private //报错
    18     public abstract void a();// 方法都是public abstract修饰的。
    19 
    20     //void b(){} 报错,接口里的方法不能有方法体,也不能有{},只能有();
    21 
    22     // final void b();
    23     // 注意,抽象方法不能加final。因为final方法不能被重写。
    24     //但如果抽象方法不被重写那就没有意义了,因为他根本没有代码体。
    25 
    26 }
    27 abstract class 抽象类 {
    28     public final int i = 1;//变量并没有被pulic和final修饰,只是一般的成员变量
    29     public final A a = null;
    30 
    31     private void A(){}//抽象类可以有具体方法
    32     abstract void AA();//抽象方法没有方法体
    33 
    34     //private abstract void B();//报错,组合非法
    35     // 因为private修饰的方法无法被子类重写,所以和final一样,使抽象方法无法被实现。
    36 
    37 }
    38 
    39 //抽象类也可以被实例化,举例说明
    40 abstract class B{
    41     B() {
    42         System.out.println("b init");
    43     }
    44 }
    45 
    46 class C extends B{
    47     C(){
    48         super();
    49         System.out.println("c init");
    50     }
    51 }
    52 
    53 public class 接口对比抽象类 {
    54     @Test
    55     public void test() {
    56         C c = new C();
    57         //结果先实例化B,再实例化C。
    58         //因为会调用到父类的构造方法。
    59     }
    60 }
  • 相关阅读:
    Oracle 备份与恢复介绍
    Oracle 监听器
    ORA-01041: 内部错误,hostdef 扩展名不存在
    NIO读写文件并加锁
    ActiveMQ消息生产消费流程
    金额,有效值等保留小数位处理
    JVM
    Linux架构分布式集群之基础篇
    Vue.js 开发实践:实现精巧的无限加载与分页功能
    Mysql 查看连接数,状态
  • 原文地址:https://www.cnblogs.com/bukechuji/p/10959647.html
Copyright © 2020-2023  润新知