zoukankan      html  css  js  c++  java
  • JAVA 继承

    1.继承概述

    继承应该理解成师傅与徒弟的关系,师傅会的,徒弟也都会。不用理解成父子关系,因为父子关系,比如家产,父亲有100块钱,那么两个儿子就要一人五十块钱。

     

     继承父类,子类里面的姓名和工号就可以不用写了

    在继承关系中,子类就是一个父类,也就是说,子类可以被当做父类看待。

    例如,父类是员工,子类是讲师,那么“讲师就是一个员工”。关系:is-a

    定义父类的格式:(一个普通的类定义)

    public class 父类名称 {

      // ...

    }

    定义子类的格式:

    public class 子类名称 extends 父类名称 {

       // ...

    }

     父类Employee

    // 定义一个父类,员工
    public class Employee {
        public void method() {
            System.out.println("方法执行!");
        }
    
    }
    

     子类Teacher

    // 定义了一个员工的子类,讲师
    public class Teacher extends Employee{
    
    }
    

      子类Assitant

    // 定义另一个子类:助教
    public class Assitant extends Employee{
    }

    Demo03Extends

    public class Demo03Extends {
        public static void main(String[] args) {
            // 创建了一个子类对象
            Teacher teacher = new Teacher();
            // Teacher类中虽然什么都没写,但是会继承来自父类的method方法
            teacher.method();
    
            // 创建另一个子类助教对象
            Assitant assitant = new Assitant();
            assitant.method();
        }
    }

      

    通过父类Employee写上一个方法,从而达到两个类中都有这个方法,实现代码复用的效果。

     2.继承中成员变量的访问特点

    父类

    public class Fu {
        int numFu = 10;
    }
    

      子类

    public class Zi extends Fu {
        int numZi = 20;
    }
    Demo03ExtendsField 
    public class Demo03ExtendsField {
    
        public static void main(String[] args) {
            Fu fu = new Fu();  // 创建父类对象
            System.out.println(fu.numFu);  // 只能使用父类的东西,没有任何子类的东西
    
            Zi zi = new Zi();
            System.out.println(zi.numFu);
            System.out.println(zi.numZi);
        }
    }
    

      

    可以看到子类可以用父类的变量

    3.继承中访问成员方法的规则

    在父子类继承关系中,创建子类对象,访问成员方法的规则:

    创建对象是谁,就优先使用谁,如果没有则向上找

    注意:无论是成员方法,还是成员变量,如果没有都是向上找,绝对不会向下找子类

     

     

     

     在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:

    (1)直接通过子类对象访问成员变量:

      等号左边是谁,就优先用谁,没有则向上找

     

    (2)间接通过成员方法访问成员变量:

     该方法属于谁,就优先用谁,没有就向上找

     3.区分子类方法中重名的三种

    局部变量:      直接写成员变量名

    本类的成员变量:   this.成员变量名

    父类的成员变量:   super.成员变量名

    4.继承关系中,父子类构造方法的访问特点

    (1)子类构造方法当中,有一个默认隐含的“super()”调用,所以一定是先调用父类构造,后执行子类构造

    (2)子类构造可以通过super关键字来调用父类重载构造

     

     当父类有重载的构造方法,需要用到关键字super

     可以改成这样

     (3)super的父类构造调用,必须是子类构造方法的第一个语句。

    不能一个子类构造调用多次super构造。

     总结:

    子类必须调用父类构造方法,不写则赠送super(),写了则用写的指定super调用,super只能有一个,还必须是第一个

     5.super关键字的三种用法

    (1)在子类的成员方法中,访问父类的成员变量

    (2)在子类的成员方法中,访问父类的成员方法

    (3)在子类的构造方法中,访问父类的构造方法

     6.this关键字的三种用法

    this 关键字用来访问本类内容

    (1)在本类的成员方法中,访问本类的成员变量

    (2)在本类的成员方法中,访问本类的另一个成员方法

     (3)在本类的构造方法中,访问本类的另一个构造方法

    注意:在这种用法中,this(...)也必须是构造方法第一个语句,也是唯一一个。super()和this两种构造调用,不能同时使用。

     

     总结

    父类和子类,可以理解段正淳和他的孩子们,段正淳不知道他有多少孩子,即父类不能向下找,子类可向上找

  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/GumpYan/p/13745882.html
Copyright © 2011-2022 走看看