Java面向对象三大特性之继承

本文介绍了Java中super关键字的使用要点及与this关键字的区别,并通过具体示例展示了如何在子类中调用父类的构造方法和成员。同时,文章还探讨了继承的基本概念及其在Java中的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

入口

  1. super注意点:

    1、super调用父类的构造方法,必须在构造方法的第一个

    2、super必须只能出现在子类的方法或者构造方法中

    3、super和this不能同时调用构造方法

  2. super 和 this 的对比:

    1、代表的对象不同:

    ​ this:本身调用着这个对象

    ​ super:代表父类对象的引用

    2、前提:

    ​ this:没有继承也可以使用

    ​ super:只能在继承条件下才可以使用

    3、构造方法:

    ​ this(); 本类的构造

    ​ super(); 父类的构造

    在这里插入图片描述

  3. 实例:

    package oop.demo7;
    
    /**
     * super注意点:
     *  1.super调用父类的构造方法,必须在构造方法的第一个
     *  2.super必须只能出现在子类的方法或者构造方法中
     *  3.super和this不能同时调用构造方法
     * super和this的对比:
     *  代表的对象不同:
     *      this:本身调用着这个对象
     *      super:代表父类对象的引用
     *  前提:
     *      this:没有继承也可以使用
     *      super:只能在继承条件下才可以使用
     *  构造方法:
     *      this(); 本类的构造
     *      super(); 父类的构造
     */
    public class Application {
    
        public static void main(String[] args) {
    
            Student student = new Student();
            student.test("秦疆");
            student.test2();
    
        }
    }
    

父类

  1. 初识:

    某一个类B继承了类A

    则说A是B的父类。

    继承后B拥有A所有的公开方法和属性。

  2. 示例:

    在这里插入图片描述

  3. 实例:

    package oop.demo7;
    
    /**
     * Person类:父类
     * 快捷键:Alt + Insert -> Constructor 生成构造器
     */
    public class Person {
    
        //无参构造器
        public Person() {
            System.out.println("父类的Person无参执行了");
        }
    
        protected String name = "kuangshen";
    
        public void print(){
            System.out.println("Person");
        }
    
        //private 私有的 私有东西无法被继承
        private void print2(){
            System.out.println("Person");
        }
    
    }
    

子类:extends关键字继承父类

  1. 初识:

    某一个类B继承了类A

    则说B是A的子类/派生类。

    继承后B拥有A所有的公开方法和属性。

    继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。

    继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。

    子类和父类之间,从意义上讲应该具有"is a"的关系。

    java类只有单继承,没有多继承。(一个儿子只能有一个爸爸,但是一个爸爸可以有多个儿子)

    快捷键:Ctrl + H 打开继承关系树(结构)

  2. 示例:

    在这里插入图片描述

  3. 实例:

    package oop.demo7;
    
    /**
     * 学生 is 人
     * 学生继承人
     * 派生类/子类
     * 子类继承了父类,就会拥有父类的全部方法
     */
    public class Student extends Person {
    
        //无参构造器
        public Student() {
            //super(); 隐藏代码:此处默认调用了父类的无参构造(不写默认调用)
            super(); //调用父类的构造器,必须要在子类构造器的第一行
            System.out.println("子类的Student无参构造器执行了");
        }
    
        private String name = "qinjiang";
    
        public void print(){
            System.out.println("Student");
        }
    
        public void test(String name){
            System.out.println(name); //传入的参数
            System.out.println(this.name); //输出当前类的属性 this关键字
            System.out.println(super.name); //在子类中访问父类的属性 super关键字
        }
    
        public void test2(){
            print(); //调用当前类的方法
            this.print(); //this关键字 调用当前类的方法
            super.print(); //super关键字 调用父类的方法
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无明之徒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值