• Java SE 第十六讲----面向对象特征之继承


    1.继承(inheritance):Java是单继承的,意味着一个类只能从另一个类继承(被继承的类叫做父类也叫【基类 baseclass】),继承的类叫做子类,java中的继承使用extends关键字。

    public class Child  extends Parent{
        public Child(){
            System.out.println("child");
        }    
        public static void main(String[] args){
            Child child = new Child();
        }
    }

    public class Parent {
        
        public Parent(){
            System.out.println("Parent");
        }
    }
    
    

    输出结果:

    Parent
    child

    分析:

    如果将父类的构造方法加了参数int i,这样子类不变的话会编译不通过,可以在子类构造方法中加super(1)

     

    2.当生成子类对象时,java默认首先调用父类的不带参数的构造方法,然后执行该构造方法,生成父类的对象,接下来再去调用子类的构造方法。

    【要想生成子类的对象,首先需要生成父类的对象,没有父类对象就没有子类对象,比如说:没有父亲就没有孩子】

    3.super关键字:super表示对父类对象的引用。

    4.如果子类使用super()显示调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类的不需参数的构造方法。

    与this一样,super也必须要作为构造方法的第一条执行语句,前面不能有其他可执行语句。

    5.关于继承的3个特点

     1)父类有的,子类也有

     2)父类没有,子类可以增加

    3)父类有的,子类可以改变

    如下所示,是属性的继承演示

    public class InheritenceTest {
        public static void main(String[] args) {
            Apple apple = new Apple();
            String s = apple.name;
            System.out.println(s);
        }
    }
    public class Apple  extends Fruit{
        String name = "apple";
    }
    
    
    public class Fruit {
        String name = "fruit";
    }

    结果是:apple,如果Apple里没有写String name= "apple",就打印fruit

     

    6.关于继承的注意事项

    a)构造方法不能被继承

    b)方法和属性可以被继承

    c)子类的构造方法隐式地调用父类的不带参数的构造方法

    d)当父类没有不带参数的构造方法时,子类需要使用super来显示地调用父类的构造方法,super指的是对父类的引用

    e)supper关键字必须是构造方法中的第一行语句。

    7.方法重写(Override):又叫做覆写,子类与父类的方法返回类型一样,方法名称一样,参数一样,这样我们说子类与父类的方法构成了重写关系。

    8.方法重写与方法重载之间的关系:重载发生在同一个类内部的两个或多个方法,重写发生在父类与子类之间

    9.当两个方法形成重写关系时,可以在子类方法中通过super.run()形成调用父类的run()方法,其中super.run()不必放在第一行语句,因为此时父类对象已经构造完毕,先调用父类的run()方法还是先调用子类的run方法是根据程序的逻辑决定的。

    10.在定义一个类的时候,如果没有显式指定该类的父类,那么该类就会继承于java.lang.Object类(JDK提供的一个类,Object类是java所有类的直接或间接的父类)

  • 相关阅读:
    MySQL------索引
    分组数据
    聚集函数
    Web的Java开发基础分享——学生信息管理系统(二)
    Web的Java开发基础分享——学生信息管理系统(一)
    shiny酷酷的第一篇CSDN博客
    vue2.0.js
    vue1.0.js的初步学习
    layui新手使用
    前端兼容性的一些问题
  • 原文地址:https://www.cnblogs.com/dieyaxianju/p/5102124.html
Copyright © 2020-2023  润新知