zoukankan      html  css  js  c++  java
  • Java学习笔记之继承

    1.使用关键字extends;

    2.java 是单继承,即只能继承一个直接父类;

    3.不能继承private,final修饰的成员变量、方法,以及构造方法;对于父类的包访问权限成员变量和方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

    4.若子类不直接使用super调用父类构造方法,系统会自动调用super()调用父类的无参构造方法,

      此时,若父类定义了有参构造方法而没有定义无参构造方法则编译不通过。

    5. 子类可以通过super调用父类的方法和属性,以方法签名区分方法,即方法名和参数列表,且必须放在该方法的第一条语句(可以是:System.out.print(super.方法名);的形式使用):
      5.1 super(参数列表);//这样会调用父类的构造方法,只能在构造方法中使用,因为构造方法只能在new一对象的同时直接调用,而不能显示地调用。

      5.2 super.成员变量 或 super.方法;//调用父类的属性和方法。

    6. 子类重写父类方法时,必须返回类型相同;若子类具有与父类同名方法,但参数列表不同,则不是重写而是重载,属于不同的方法。

    7.子类方法不能抛出比父类更多的异常。子类方法抛出的异常不许和父类方法抛出的异常相同,或者子类方法抛出的异常是子类方法抛出的异常类的子类。例如:Base base=new Sub();编译的时候只是看到了Base类型,所以不能捕获Base类声明之外的类型,否则编译出错,但是如果不捕获这些异常,将导致程序异常终止。

    8.子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。在编译时,子类定义的静态方法也必须满足与方法覆盖类似的约束:方法的参数签名一致,返回类型一致,不能缩小父类方法的访问权限,不能抛出更多的异常。

    9.父类的非静态方法不能被子类覆盖为静态方法;父类的静态方法不能被子类覆盖为非静态方法。

    10.父类的非抽象方法可以被覆盖为抽象方法。这样是:普通类的子类是抽象类,并且,非抽象方法被抽象方法覆盖。

  • 相关阅读:
    laravel 表单接收
    Ubuntu查找通过apt命令已安装软件
    Centos7.2源码编译安装LA(N)MP
    文件和目录权限
    第六天 软件安装和管理
    第五天用户和组群账户管理
    第四天 文件和目录操作
    第三天 目录和文件
    第二天 linux命令
    oracle数据库学习第一天
  • 原文地址:https://www.cnblogs.com/qingyibusi/p/5763185.html
Copyright © 2011-2022 走看看