JAVA SE Review (3) - 类 & 继承 & 接口

Part 4 : 类、继承、接口

    • 基本结构:

              class Person{
                  private static int[] password;//字段
                  public String name;
                  void Hello(){//方法
                      System.out.println("Hello!");
                  }
              }
    • 构造方法 :

      • 与类名同名,不写返回类型
      • 如无定义,将生成默认构造方法(操作为空)
      • 可重载实现多态
      • 可以在一个构造方法中调用另一构造方法,但是需要放在第一句
      • 访问字段 : 实体.字段(类外部) / this.字段 (类方法中)
    • 善用setter与getter


  1. 继承
    • 关键字 : extends
    • 本质 : E-R关系图中的is-a关系(说明此子类继承父类所有方法,字段)
    • 可通过对变量重定义进行“隐藏”,也可添加新变量,访问隐藏字段 -> super.
    • 可对同名方法重定义,实现覆盖(以子类为准),建议加标记@OverRide,访问覆盖方法 -> super.
    • 子类可进行强制类型转换变为父类



    • 本质 : 解决namespace与命名冲突问题,同一包各个类默认可以互相访问
    • 引入关键词 : import


  2. 访问权限

    • 分为两类:访问修饰符,其他修饰符
    • 访问修饰符:

      同一个类中 同一个包中 不同包的子类中 不同包中的非子类
      private Yes
      默认 Yes Yes
      protected Yes Yes Yes
      public Yes Yes Yes Yes

      (此修饰适用于类/类中成员)

    • 非访问控制符

      基本含义 修饰类 修饰成员 修饰局部变量
      Static 静态,预分配 可以修饰子类 Yes
      Final 最终的,不可改变 Yes Yes Yes
      abstract 抽象的,不可实例化 Yes Yes
      • static
        • 类变量可通过类名访问或实例对象访问,结果相同(本质:属于这个类)
          如: System.in / System.out
        • 一定程度上,可以作为全局变量表示方式
        • 推荐使用类名调用,static方法中不可使用 super / this
      • final
        • 类修饰结果:不可被继承——不会有子类
        • 字段/变量修饰结果:只可赋值一次,不可被修改——只读量
        • static final 可用于表示常量
      • abstract
        • 类修饰结果:不可被实例化
        • 方法修饰:只需声明,且若类包含abstract方法,则类为abstract类(子类亦同,直至实现)


  3. 接口(interface)

    • 抽象:用来描述一个对象的行为特征
    • 本质:使不相关类,可以有同样的方法(接口只负责描述)
    • 例子:toString()
    • 意义:实现了多重继承

      实际上,接口可以作为一种特殊的类,在泛型操作(<list>)中,可以将接口作为一种类型,这就使得使用该接口的变量可以向上转型(又称向上转换),这就实现了另一种意义上的“继承”
      (详参 Java SE Review(4) - Java内部机制 (2) : 向上转换与向下转换)

    • 定义结构:

      [public] interface Name[extends SuperInterface]{
      [returnType] methodName([paralist]);//方法
      Elemtype elem = value;//常量
      }
    • 接口中的方法(Method):

      • 接口中的方法具有abstractpublic属性
      • 可以对父接口方法隐藏,进行重载
      • 引用接口的类必须实现引用接口的所有声明的方法
        例:

        class FIFOQuene implements Name{
        ...
        public methodName([paralist]){
        ...
        }
        ...
        }
      • 接口对象可以作为引用,将其他实现接口的实例的对象存储在其中,通过这些变量可以访问类实现的接口中的方法,JAVA运行时系统动态确定使用哪个类中的方法
        例:

        public static void main(String args[]){
        ...
        Name temp = new FIFOQuene();
        ...
        temp.methondname([objlist]);
        ...
        }

      • Java8以上,可以对接口中定义的方法在接口中实现,称为默认方法(关键词default),即:提供默认实现

      • 接口中的常量:
        • 接口中不可以存在字段,但可以存在常量,常量被所有引用此接口的类共享,类似于C/C++中的 const#define
        • 常量具有public,static,final属性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章