继承/理解 super和this关键字

本文详细介绍了Java中super和this的关键字用法。super用于调用父类的构造函数、成员变量和方法,而this则用于引用当前对象并调用同一类中的构造函数、成员变量和方法。在子类构造函数中,super必须作为首行调用父类构造函数。示例代码展示了如何在Dog类中使用super和this来初始化Animal类的属性。在实际编程中,理解这两个关键字的区别和使用场景至关重要。

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

理解

super 用法:
1. 访问父类构造函数,super()无参构造为默认,super(参数)有参构造,必须出现在子类构造方法的首行
2. 访问父类成员变量,super.父类变量名
3. 访问父类方法,super.父类方法名()
this 意义:当局部变量和成员变量发生冲突,用this区分
1. 调用构造方法,this(),this(参数)
2. 调用成员变量,this.对象属性名
3. 调用成员方法,this.对象方法名

区分

  1. super是当前对象的父对象的引用,本质上是一个Java关键字,也可以理解指向自己父类对象的一个指针
    this指的是当前对象的引用,本质上是个对象本身的指针,在同一个类中调用其他方法

注意

  1. super和this不能同时出现在一个构造方法里
    因为this必然调用其他构造方法,其他的构造方法中肯定有super存在,所以在同一个构造方法里有相同的语句,会失去语句的意义,编译器也不会通过
  2. super和this都不能在static环境中适用(static变量、方法、语句块)
    因为它们都指的是对象

看影响的例子

package com.aaa.p060302;
class Animal{
    protected String name;
    protected int age;
    public Animal(){
    }
    public Animal(String name,int age){
        this.name = name;
        this.age = age;
    }
    public void show(){
        System.out.println("父类"+name+"年龄"+age);
    }
}
class Dog extends  Animal{
    String color;
    int age = 10;
    String name = "哈哈";
    public Dog(String xm,int xage,String xc){
        super.name = xm;
        super.age = xage;
        color = xc;
    }
    @Override
    public void show(){
        System.out.println("子类age"+age);
        super.show();
        System.out.println("子类color"+color);
    }
}
public class Demo0604 {
    public static void main(String[] args) {
        Dog d = new Dog("旺财",100,"黄色");
        d.show();
    }
}

看下debug时候,实例d的参数情况:
实例d的参数情况:父类和子类同名的name和age但是不同值
运行结果:
不重要也要看一下的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值