【学习笔记】 唐大仕—Java程序设计 第4讲 类、包和接口之4.2 类的继承

本文深入探讨Java中类的继承机制,重点讲解super关键字的使用,包括如何通过super访问父类的域和方法,调用父类构造方法,以及父类与子类对象的转换规则。

【学习笔记】 唐大仕—Java程序设计 第4讲 类、包和接口之4.2 类的继承

super的使用

1.使用super访问父类的域和方法

注意:正是由于继承,使用this可以访问父类的域和方法。但是有时为了明确指明父类的域和方法,就要用关键字super。this和super都是指当前同一个对象

例如:父类Student有一个域age,在子类Student中用age,那么this.age,super.age来访问age是完全一样的:

    void testThisSuper(){
        int a;
        a = age;
        a = this.age;
        a = super.age;
    }

当然,使用super不能访问在子类中添加的域和方法

有时需要使用super以区分同名的域和方法

  • 使用super可以访问被子类所隐藏了的同名变量
  • 又如,当覆盖父类的同名方法的同时,又要调用父类的方法,就必须使用super。如:
    @Override
    void sayHello(){
        super.sayHello();
        System.out.println("My school is" + school);
    }

在覆盖父类的方法的同时,又利用已定义好的父类的方法

2.使用父类的构造方法

构造方法是不能被继承的

  • 比如,父类Person有一个构造方法Person(String, int),不能说子类Student也自动有一个构造方法Student(String, int)

但是,子类在构造方法中,可以用super来调用父类的构造方法。

    Student(String name, int age, String school){
        super(name, age);
        this.school = school;
    }

使用时,super必须放在第一句

父类对象与子类对象的转换
    • 类似于基本数据类型数据之间的强制类型转换,存在继承关系的父类对象和子类对象之间在一定条件下也可以相互转换
      (1).子类对象可以被视为其父类的一个对象,如一个Student对象也是一个Person对象
      (2).父类对象不能被当做其某一个子类对象
      (3).如果一个方法的形式参数定义的是父类对象,那么调用这个方法时,可以使用子类对象作为实际参数
      (4).如果父类对象引用指向的实际是一个子类的对象。那么这个父类对象的引用可以用强制类型转换(casting)成子类对象的引用

转载于:https://www.cnblogs.com/dreamcoding/p/9905020.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值