• 继承


    继承

    继承又分子类(派生类)和父类(基类),子类通过extends关键字来继承父类的所有特性,且可以在此基础上增加自身的特性。一个子类只能有一个父类,但一个父类可以有多个子类。继承是类与类之间的关系

    package oop.demo04;

    public class Demo01 extends Application{
    }

    这样Demo01就为子类,通过extends继承了父类Application的所有属性。

     

    需要注意!!在父类中如果有private的私有属性,子类则不能继承这个属性,只可以通过get/set来获得使用权限。

    在java中,存在着一个Object的隐藏类,所有类都默认直接或间接的继承了这个类,比如String类这些系统里的类都继承了Object类。可以通过ctrl + H来查看类的继承关系。Object类代表了一个类的初始化功能。

    super关键字

    在继承中,除了extends的继承关键字,还有一个super调用的关键字。

    1. super与this近似,this代表调用当前类的方法,super代表调用当前这个类的父类的方法。但如果父类的方法是private的私有属性,则super也不能调用。

    2. 在继承关系中,子类的构造器内又包含了一个隐藏的super(); ,代表这个子类构造器中,默认将父类构造器一起调用了

    3. 在构造器中,super与this都是只能放在第一个,先执行。所以证明在构造器中,不能同时调用子类和父类,只能选择其中一个进行调用。

    父类无参构造

    package oop.demo04;

    public class Application {
      public Application() {
          System.out.println("父类无参构造");
      }
    }

    子类无参构造

    package oop.demo04;

    public class Demo01 extends Application{
      public Demo01() {
          System.out.println("子类无参构造");
      }
    }

    测试类

    package oop.demo04;

    public class Demo02 {
      public static void main(String[] args) {
          Demo01 demo01 = new Demo01();
      }/*输出后结果为 父类无参构造
                    子类无参构造
                    */
    }

    因为创建对象的本质就是在调用构造器,所以在测试类创建子类对象,就相当于调用了子类的构造器。

    由此得出: 子类的构造器中,默认生成了一个super();来调用父类构造器,且这个super();排在最上面,第一个输出。

    快捷键为 alt + Ins

     

    方法重写

    重写 Override                idea快捷键 Ctrl + O     eclipse快捷键 Alt + / 

    方法的重写是由子类改变父类的静态方法

    如何重写:由子类输出一个和父类的静态方法一模一样的静态方法,此时子类的静态方法默认会输出父类的这个静态方法。而在子类中的这个静态方法中写入其他属性,就可以更改此次的父类方法结果。这就是方法的重写

    父类静态方法

    package oop.demo04;

    public class Application {
    public void ii() {//静态方法
       System.out.println("父类");
      }
    }

    子类静态方法

    package oop.demo04;

    public class Demo01 extends Application{
       public void ii(){//静态方法
           System.out.println("子类");
      }
    }

    测试类

    package oop.demo04;

    public class Demo02 {
       public static void main(String[] args) {
           Demo01 demo01 = new Demo01();//输出Demo01的静态方法结果
           demo01.ii();

           Application application = new Demo01();//输出Application的静态方法结果
           application.ii();
      }
    }//得出结果   子类

    方法重写注意事项!!

    1. 所需重写的类之间必须为继承关系

    2. 方法必须为静态方法

    3. 方法名必须相同

    4. 参数列表必须相同

    5. 修饰符:范围可以扩大但不能缩小 public>protected>default> private

    6. 抛出异常:范围可以被缩小,但不能扩大

    重写!子类的方法必须要与父类的方法一致,但方法体不同。

    为什么要重写?

    父类的功能,子类不一定需要或满足,所以需要重新写一个。

     

  • 相关阅读:
    9个免费的桌面产品自动化测试工具
    How to wait for any one of the two element to appear on the screen?
    git仓库过大致使clone失败的解决方法
    Maven项目打包出现:No compiler is provided in this environment. Perhaps you are running on a JRE rather than JDK
    eclipse java maven testng The import org.testng cannot be resolved
    Codeforces Round #165 (Div. 1) B 269B Greenhouse Effect
    Codeforces Round #162 (Div. 1) B 264B Good Sequences
    HDU 4512 HDOJ 吉哥系列故事——完美队形I 腾讯2013初赛第三场
    HDU 4483 HDOJ Lattice triangle
    第二届腾讯校园编程马拉松参赛感想 极限!马拉松
  • 原文地址:https://www.cnblogs.com/jinweichaoyouqu/p/13963908.html
Copyright © 2020-2023  润新知