Java super关键字的用法详解

Java super关键字的用法详解

简介

在Java中,有一个关键字叫作“super”,用于访问父类的属性和方法。它常常与子类的构造器和方法一起使用。本文将详细讲解Java super关键字的用法。

访问父类的属性和方法

子类继承父类后,可以访问到父类的公共(public)属性和方法。如果父类和子类定义了同名的属性和方法,那么子类访问的会是自己的属性和方法,父类的属性和方法会被隐藏。

子类使用super关键字,可以访问到父类的公共属性和方法,即使父类和子类定义了同名的属性和方法也一样。

访问父类的属性

子类使用super关键字可以访问到父类的公共属性,如下所示:

public class Animal {
    protected int age;

    public Animal(int age) {
        this.age = age;
    }
}

public class Bird extends Animal {
    private String color;

    public Bird(int age, String color) {
        super(age); // 父类的构造器
        this.color = color;
    }

    public void printAge() {
        System.out.println(super.age); // 访问父类的属性
    }
}

在Bird类中,使用super.age可以访问到父类Animal的age属性。

访问父类的方法

子类使用super关键字可以访问到父类的公共方法,如下所示:

public class Animal {
    protected void sing() {
        System.out.println("Animal is singing");
    }
}

public class Bird extends Animal {
    private String color;

    public void sing() {
        System.out.println("Bird is singing");
        super.sing(); // 调用父类的方法
    }
}

在Bird类中,使用super.sing()可以调用父类Animal的sing()方法。

调用父类的构造器

子类的构造器中默认会调用父类的无参构造器,如果父类没有提供无参构造器,子类必须手动调用父类的构造器。在Java中,使用super关键字可以调用父类的构造器。

在构造器中调用父类的构造器

子类的构造器中使用super关键字可以调用父类的构造器,如下所示:

public class Animal {
    protected int age;

    public Animal(int age) {
        this.age = age;
    }
}

public class Bird extends Animal {
    private String color;

    public Bird(int age, String color) {
        super(age); // 调用父类的构造器
        this.color = color;
    }
}

在Bird类的构造器中,使用super(age)调用父类Animal的构造器。这里注意,调用父类的构造器必须放在子类的构造器中的第一行。

示例说明

示例1

下面的示例代码展示了如何使用super关键字访问父类的属性和方法:

public class Animal {
    protected int age;

    public Animal(int age) {
        this.age = age;
    }

    public void sing() {
        System.out.println("Animal is singing");
    }
}

public class Bird extends Animal {
    private String color;

    public Bird(int age, String color) {
        super(age); // 调用父类的构造器
        this.color = color;
    }

    public void printAge() {
        System.out.println(super.age); // 访问父类的属性
    }

    public void sing() {
        System.out.println("Bird is singing");
        super.sing(); // 调用父类的方法
    }
}

public class Main {
    public static void main(String[] args) {
        Bird bird = new Bird(3, "red");
        bird.printAge(); // 访问父类的属性
        bird.sing(); // 调用父类和子类的方法
    }
}

上面的示例代码中,演示了如何使用super关键字访问父类的属性和方法。

示例2

下面的示例代码展示了如何使用super关键字调用父类的构造器:

public class Animal {
    protected int age;

    public Animal(int age) {
        this.age = age;
    }
}

public class Bird extends Animal {
    private String color;

    public Bird(int age, String color) {
        super(age); // 调用父类的构造器
        this.color = color;
    }
}

public class Main {
    public static void main(String[] args) {
        Bird bird = new Bird(3, "red");
    }
}

上面的示例代码中,演示了如何使用super关键字调用父类的构造器。

总结

Java super关键字有访问父类的属性和方法、调用父类构造器的作用,它可以让子类使用父类的属性和方法,保证程序的可扩展性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java super关键字的用法详解 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 使用ViewPager实现三个fragment切换

    ViewPager是Android中常用的控件之一,可以实现多个Fragment之间的切换。本文将介绍使用ViewPager实现三个Fragment切换的完整攻略,包括创建Fragment、创建ViewPager、设置适配器等内容,并提供两个示例说明。 1. 创建Fragment 在使用ViewPager实现Fragment切换之前,我们需要先创建三个Fra…

    other 2023年5月5日
    00
  • Swift教程之字符串和字符详解

    Swift教程之字符串和字符详解 字符串基础 字符串在 Swift 中是一种基本类型,表示有序的字符集合。可以通过字符串字面量创建字符串,例如: let greeting = "Hello, world!" Swift 中的字符串是采用 Unicode 编码的,可以包含任意字符,即使是如下的 Unicode 标量: let ?? = &q…

    other 2023年6月20日
    00
  • C#自定义控件添加右键菜单的方法

    当我们自定义C#控件时,有时候需要为控件添加右键菜单使得用户可以进行更多操作。下面是添加右键菜单的步骤: 1. 创建右键菜单 我们需要先创建一个右键菜单,并在其中添加各个菜单项。 // 创建右键菜单 ContextMenu contextMenu = new ContextMenu(); // 添加菜单项 MenuItem menuItem1 = new M…

    other 2023年6月27日
    00
  • php 获取本机外网/公网IP的代码

    获取本机外网/公网IP的代码可以使用PHP的网络请求功能来实现。以下是一个完整的攻略,包含两个示例说明: 步骤1:使用网络请求获取外网IP 首先,我们需要使用一个网络请求来获取外网IP。可以使用PHP的file_get_contents()函数或者curl库来发送HTTP请求并获取响应。 示例1:使用file_get_contents() <?php …

    other 2023年7月31日
    00
  • 原生js自定义右键菜单

    了解了您的需求,我针对“原生js自定义右键菜单”的完整攻略,提供如下讲解。 1. 添加右键菜单的基本思路 我们可以通过在DOM元素上绑定鼠标右击事件,再利用CSS样式和JavaScript代码控制菜单的显示和隐藏。 具体的实现步骤如下: 监听鼠标右击事件 创建一个div元素用于显示菜单,将其样式设置为隐藏 在监听函数中,获取右击位置的坐标,并将菜单显示在该位…

    other 2023年6月25日
    00
  • centos安装jdk1.8的三种方法

    CentOS安装JDK1.8的三种方法 Java是一种广泛使用的编程语言,因此在CentOS服务器上安装JDK非常重要。在本文中,我们将探讨在CentOS上安装JDK1.8的三种方法。 方法一:使用yum安装JDK1.8 CentOS的默认存储库中没有包含JDK。但是,我们可以使用一个名为”adoptopenjdk”的第三方库来安装。执行以下命令以安装: s…

    其他 2023年3月28日
    00
  • mysql查找分组某个字段最大值的记录

    MySQL查找分组某个字段最大值的记录 在进行复杂的MySQL查询时,经常需要查找分组中某个字段的最大值记录。这篇文章将介绍如何使用MySQL语句实现该功能。 准备数据库 为了演示如何查找分组中某个字段的最大值记录,我们需要准备一个示例数据库。下面是一个简单的表结构: CREATE TABLE students ( id INT PRIMARY KEY, n…

    其他 2023年3月28日
    00
  • 怎么查找对方ip,教你如何通过qq查找ip教程

    怎么查找对方IP – 教你如何通过QQ查找IP教程 简介 在互联网上,我们有时候需要查找对方的IP地址,以了解对方的位置或者进行网络安全分析。本教程将详细介绍如何通过QQ查找对方的IP地址。 步骤 步骤一:准备工作 在开始之前,你需要准备以下工具和信息:- 一台电脑或者手机- 安装有QQ的设备- 对方的QQ号码 步骤二:登录QQ 打开QQ应用或者访问QQ官方…

    other 2023年7月31日
    00
合作推广
合作推广
分享本页
返回顶部