Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java之父类中的构造器是否能被子类继承?

java之父类中的构造器是否能被子类继承?

作者头像
西西嘛呦
发布于 2020-08-26 07:07:25
发布于 2020-08-26 07:07:25
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

子类默认继承父类的属性和方法,但不会继承父类的构造器,而是在子类被实例化时会默认调用父类的空构造器。子类在创建的时候会调用自己的空构造器,并在空构造器会隐式调用super(),即父类的空构造器。如果父类的构造器被重载,那么子类中的构造器也必须初始化父类的构造器,否则会报编译错误。当然,只要父类中显示定义了空构造器,子类中就不必初始化父类的构造器。例如: 父类Person.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package myjava;

public class Person {
    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return this.age;
    }
    
    public Person(String name) {
        this.name = name;
    }
}

子类:Student.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package myjava;

public class Student extends Person{
    //这里必须初始化父类重载后的构造方法,否则会报错
    public Student(String name) {
        super(name);
    }
    
}

Test.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package myjava;

public class Test {
    public static void main(String[] args) {
        
        Person p = new Person("tom");
        Student stu = new Student("jack");
        String personName = p.getName();
        String studentName = stu.getName();
        System.out.println(personName);
        System.out.println(studentName);
}

输出:

tom

jack

说明:此时父类中没有显示定义空构造器,只有一个重载了的构造器,在子类构造器中,必须初始化父类的构造器,即super关键字+父类构造器中的参数。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java之反射机制
假设现在我们有一张动漫的图片,我们通过这张图片,在大脑中搜索有关记忆,就清楚这张图片是什么动漫里的谁;假设我们现在有一个名字,在大脑中搜索有关记忆,就自然而然地想到了该名字人物的具体形象,这种思维过程就是反射。
西西嘛呦
2020/08/26
3090
《Monkey Java》课程5.2之继承(extends)基础
本节课程将学习以下内容: 什么是继承 为什么要使用继承 继承的基本语法特点 ---- 继承的概念和格式 现实世界中,打个比方,继承就是富二代,就是儿子得到并使用老子的东西; 面向对象的世界中,继承就是一个类得到了另外一个类当中的成员变量和成员方法。 格式: class A{ 语句; } class B extends A{ 语句; } class C extends A{ 语句1; 语句2; } 注意:Java中只允许单继承,不允许多继承。 例子:(请动手) 1.新建一个名为Pe
GitOPEN
2019/01/29
4340
《Monkey Java》课程5.4之函数的复写(override)
本节课程将学习以下内容: 函数的复写(override) 使用super调用父类的成员函数 ---- 函数的复写(override) 复写(override),也被称为覆盖或者重写。 在你对父类的成员方法不满意的时候,你可以在子类中复写这个方法,来写出符合自己要求的方法。 特点: 1.在具有父子关系的两个类当中; 2.子类和父类中各有一个函数,这个函数的定义(返回值类型,函数名和参数列表)完全相同,那么它们的关系就是复写。 使用super调用父类的成员函数 左右: 减少子类复写父类的成员方法时出
GitOPEN
2019/01/29
3610
Java 继承(extends)详解
继承性是面向对象的第二大主要特征。 下面首先编写两个程序:Person类、Student类。
全栈程序员站长
2022/09/08
3210
java 继承
继承是面向对象编程中非常强大的一种机制,它首先可以复用代码。当我们让Student2从Student继承时,Student2就获得了Student的所有功能,我们只需要为Student2编写新增的功能。 通过继承,Student2只需要编写额外的功能,不再需要重复代码。
await
2021/09/09
9180
python之子类继承父类时进行初始化的一些问题
__init__相当于是python类的构造方法,在类进行实例化时被调用,当子类和父类中都存在构造方法时,子类中需要显示调用父类的构造方法 。需要注意的是python中构造方法是不能进行重载的,当有多个构造方法存在时,会默认调用最后一个构造方法。修改后的代码如下:
西西嘛呦
2020/08/26
6480
python之子类继承父类时进行初始化的一些问题
《Monkey Java》课程5.3之子类实例化
本节课程将学习以下内容: 生成子类的过程 使用super调用父类构造函数的方法 ---- 生成子类的过程 使用super调用父类构造函数的方法 注意: 在子类的构造函数中,必须调用父类的构造函数; super所调用的是父类的哪个构造函数,是由super(参数)中的参数个数决定; super(参数);必须是构造函数的第一行。 例子:(请动手) 1.新建一个名为Person.java的Java源文件: class Person{ String name; int age; Person(){
GitOPEN
2019/01/29
4950
第十二天 面向对象-构造方法继承this super【悟空教程】
第12天 面向对象 第1章 构造方法 1.1 构造方法概念与功能 构造方法是正常开发中不可或缺的一部分,是语法上必须存在的。是一个具有特殊格式的方法,且有特殊的调用方式。 用来创建实例对象的方法。 给对象的数据进行初始化 Person p = new Person(); 调用构造方法 Person() 只是我们没有写这个方法,而是Java自动补齐了这个方法,是方法就可以传入参数。 创建对象时,可以直接为成员变量赋值,无需再在对象产生后再赋值。 核心功能创建对象 只要方法被调用,就已经创建了对象
Java帮帮
2018/06/11
5810
java之this关键字
说明:新建一个对象时,根据传的参数的不同(类型或者个数),java会调用相应的构造方法。在构造方法中,通过this(参数),又会调用其它的构造方法。
西西嘛呦
2022/05/10
1310
java之this关键字
java之方法的重写
在子类中可以根据需要对从父类中继承而来的方法进行改造,也称为重写。在执行程序时,子类的方法将覆盖父类的方法。
西西嘛呦
2020/08/26
8300
[ Java学习基础 ] Java的继承与多态
看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ------------------------------------ 一、Java继承       继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。       继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有
Kevin_Zhang
2018/05/22
1K0
第二十八节:Java基础-进阶继承,抽象类,接口
在子类和父类中都有构造函数,运行时,先执行父类中的构造函数,在执行子类的构造函数,因为子类的所有构造函数中第一行都有一句,隐式的super();,表示为调用父类的无参的构造函数。
达达前端
2019/07/03
3590
第二十八节:Java基础-进阶继承,抽象类,接口
【Java】继承、super、final、子类构造方法
Java中使用类对现实中实体进行描述,类经过实例化之后的产物对象则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序时就需要考虑如何简化。
椰椰椰耶
2024/10/15
1830
【Java】继承、super、final、子类构造方法
Java面向对象基础(封装继承多态)【1】
面向对象的三大特征:继承、封装、多态进行详细的讲解。另外还包括抽象类、接口、内部类等概念。很多概念对于初学者来说,更多的是先进行语法性质的了解,然后进行大量的练习,编程才算是刚刚开始。
徐建国
2021/08/03
6950
Java面向对象基础(封装继承多态)【1】
《Monkey Java》课程5.5之对象的转型
本节课程将学习以下内容: 对象的向上转型 对象的向下转型 ---- 对象的向上转型 概念: 将子类的对象赋值给父类的引用。 注意: 两个类一定要有继承关系; 将子类的对象赋值给父类的引用; 一个引用能够调用哪些成员(变量、方法),取决于这个引用的类型; 一个引用调用的是哪个方法,取决于这个引用所指向的对象。 格式: // Student类是Person类的子类 Student s = new Student(); // 将子类的对象s赋值给父类的引用p; // 理解:每一个学生都是一个人。 Pe
GitOPEN
2019/01/29
3180
【趣学程序】java面向对象三大特征
封装:通常将类中的成员变量私有化(private),通过对外提供方法(setXxx,getXxx),可对该变量(xxx)进行访问。 boolean 类型的变量没有getXX,只有 isXX;
趣学程序-shaofeer
2019/07/27
3930
Java从入门到精通五(Java面向对象下,封装,继承,多态)
在程序设计中,封装是一种将数据实现包装,隐藏起来的方法。数据是非常重要的,封装的出现,提高了数据的安全性。不能通过直接去访问数据,只能用程序中提供的可访问数据的接口。另外一点,就是通过封装,让我们更加方便的去访问自己所存储的数据,还有就是便于维护。
兰舟千帆
2022/07/16
2660
Java从入门到精通五(Java面向对象下,封装,继承,多态)
大数据必学Java基础(四十):面向对象三大特性之一继承(Inheritance)
父类private修饰的内容,子类实际上也继承,只是因为封装的特性阻碍了直接调用,但是提供了间接调用的方式,可以间接调用。
Lansonli
2022/08/03
4480
大数据必学Java基础(四十):面向对象三大特性之一继承(Inheritance)
Java多重继承简单示例
package com.pku.wuyu.io; class Person{ // 定义Person类 private String name ; // 定义name属性 private int age ; // 定义age属性 public void setName(String name){ this.name = name; } public void setAge(int age){ this.age = age ; } public String getNam
葆宁
2019/04/18
6830
Java多重继承简单示例
大话Java异常
@toc 异常 异常的概述 --- 异常就是不正常的意思,Java语言中主要是指程序在运行阶段产生的错误 Throwable(可抛出的,可扔出的) - java.lang.Throwable 类是Java程序所有错误或异常的超类 - 主要有两个字类 - Error - Error主要描述比较严重的错误 - 无法通过编程来解决的重大的错误 - Exception - Exception主要m描述比较轻量级的错误 - 可以通过编程来解决 Exception类的
ruochen
2021/05/15
7140
大话Java异常
相关推荐
java之反射机制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验