JAVA继承时构造函数的问题
今天看到java继承部分时,关于构造函数是否继承以及如何使用时遇到了点问题,后来查找相关资料解决了。
下面是我个人的总结:
先创建一个父类,里面有两个构造函数:
public class Jisuan {
protected int a=4;
//构造函数1
Jisuan()
{
System.out.println("父类的无参数构造函数");
}
//构造函数2
Jisuan(int a)
{
System.out.println("父类的有参数构造函数");
}
}
再创建一个子类,里面也有两个构造函数:
public class JisuanKid extends Jisuan {
//构造函数3
public JisuanKid() {
System.out.println("子类的无参数构造函数");
}
//构造函数4
public JisuanKid(int a) {
System.out.println("子类的有参数构造函数");
}
}
再创建第三个类;
public class TestArray {
public static void main(String[] args){
JisuanKid jisuan = new JisuanKid(3);
}
}
1、此时执行:
结果:
父类的无参数构造函数
子类的有参数构造函数
2、去掉构造函数1
结果:出错
3、去掉构造函数1和2
执行结果:
子类的有参数构造函数
4、去掉构造函数4
执行结果:
父类的无参数构造函数
出现错误 结论如下:
1.子类不能继承父类的构造函数
2.若父类中无任何构造函数,则系统默认加上无参数构造函数,创建子类对象时会调用父类的默认无参数构造函数创建父类。然后再调用子类的相应构造函数
3.若父类中有带参数构造函数,则系统不会添加默认无参数构造函数,创建子类对象时会调用父类的无参数构造函数创建父类对象,因为此时父类没有无参数构造函数,故会报错。
4.另外还可以在子类的构造函数中,使用super()或者super(参数名)来使用父类的无参数构造函数和带参数构造函数
JAVA继承时构造函数的问题的更多相关文章
- JAVA继承时this和super关键字
JAVA继承时this和super关键字 本文主要讨论在方法前使用this或super关键字时,编译器在什么地方查找对应的函数. 在子类中指定this关键字.首先在本类中查找,如果本类中找不到,再在父 ...
- Java继承时的初始化顺序
Java程序在启动和运行时,需要首先完成初始化的工作.在涉及到继承.static成员变量等因素时,初始化的顺序就复杂起来.下面以一个例子说明继承时的Java初始化顺序. 例子: class Insec ...
- java继承的构造函数
1.在构造函数的继承中,子类不能继承父类的构造函数.但是子类却可以用super()或super(参数)使用父类的构造函数, <1>无参的构造函数: //父类 public class An ...
- Java继承和构造函数
构造函数不是类的成员,它们不是由子类继承的.它们用于初始化实例变量. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class CSuper { public ...
- java继承时能包括静态的变量和方法吗?举例说明!
子类继承了超类定义的所有实例变量和方法包括静态的变量和方法(马克-to-win见下例),并且为它自己增添了独特的元素.子类只能有一个超类.Java不支持多超类的继承. 子类拥有超类的所有成员,但它不能 ...
- 【C++】继承时构造函数和析构函数
1. 顺序 先调用基类的构造函数,再调用派生类构造函数.析构顺序相反. 2. 构造函数 派生类 不用初始化列表调用基类构造函数->调用基类的默认构造函数 派生类 使用初始化列表调用基类带参构造函 ...
- python类继承时构造函数的运行问题
假设子类定义了自己的__init__构造方法函数.当子类的实例对象被创建时,子类仅仅会运行自己的__init__方法函数.假设子类没有定义自己的构造方法函数.会沿着搜索树找到父类的构造方法函数去运行父 ...
- JAVA中继承时方法的重载(overload)与重写/覆写(override)
JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就 ...
- java构造函数使用方法总结 (继承与构造函数)
使用构造器时需要记住: 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个.1个或1个以上的参数 4.构造器没有返回 ...
随机推荐
- vuejsLearn--- v-for列表渲染
Vue.js是一个构建数据驱动的web界面的库.重点集中在MVVM模式的ViewModel层,因此非常容易与其它库或已有项目整合 Vue.js 的核心是一个响应的数据绑定系统,它让数据与DOM保持同步 ...
- JMeter学习-034-JMeter调试工具之一---HTTP Mirror Server
通常,编程工具IDE都提供了相应的调试模块,供开发者使用,以便更快速的定位问题所在.那么在JMeter编写测试脚本的过程中,JMeter都提供了哪些调试工具供我们使用呢? JMeter常用的调试工具有 ...
- LeetCode Power of Four
原题链接在这里:https://leetcode.com/problems/power-of-four/ 题目: Given an integer (signed 32 bits), write a ...
- 基于 Token 的身份验证方法
使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录.大概的流程是这样的: 客户端使用用户名跟密码请求登录 服务端收到请求,去验证用户名与密码 验证成功后,服务端会签发一个 Toke ...
- Leetcode: Android Unlock Patterns
Given an Android 3x3 key ≤ m ≤ n ≤ , count the total number of unlock patterns of the Android lock s ...
- 浅析angular,react,vue.js jQuery使用区别
前端越来越混乱了,当然也可以美其名曰:繁荣.当新启动一个前端项目,第一件事就是纠结:使用什么框架,重造什么轮子? PS:大牛留言讨论那么,希望看完此篇,能够给你一个清晰的认识,或者让你更加地纠结和无所 ...
- 关于mybatis的理解
http://blog.csdn.net/jiuqiyuliang/article/details/45132493 写的不错很好!
- 在SublimeText上搭建ReactJS开发环境(转载)
本文转载自: http://blog.csdn.net/yczz/article/details/50469388
- 浅析MySQL中exists与in的使用
exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录, ...
- net core 控制台中文乱码的解决方案
net core 对控制台中文的支持需要加入下面的语句 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);