java abstract构造函数调用
构造函数是对象的基本,没有构造函数就没有对象。
如果在父类中(这里就是你的抽象类)中显示的写了有参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数
public abstract class Person {
int a = 0;
//如果不写Person(),java会默认加上一个不带参数的构造函数,即Person(){};
Person() {
a = 10;
System.out.println("class is " + Person.class);
}
Person(int x) {
a = x;
}
}
子类
public class Student extends Person {
int b = 0;
Student() {
//super();//可不写,默认调用Person();
b = 100;
System.out.println("class is " + Student.class);
}
Student(int x) {
//super(x);此处若不显示调用父类的带参构造函数,则默认调用 无参 构造函数Person();
b = 200;
}
}
测试类
public class abTest {
public static void main(String[] args) {
Student s = new Student();
System.out.println(s.a);
Student s1 = new Student(1000);
System.out.println(s1.a);
}
}
输出
class is class AbstractClz.Ab_1.Person
class is class AbstractClz.Ab_1.Student class is class AbstractClz.Ab_1.Person
结论:
无参:调用子类的构造函数前,先执行父类的构造函数。
带参:带参构造函数需显示调用super(x),才能调用父类的Person(int x),否则调用默认Person();
java abstract构造函数调用的更多相关文章
- java初始化构造函数调用顺序
类初始化时构造函数调用顺序: (1)初始化对象的存储空间为零或null值: (2)调用父类构造函数: (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式: (4)调用本身构造函数. 例子 ...
- [改善Java代码]构造代码块会想你所想
建议37: 构造代码块会想你所想 镜像博文:http://www.cnblogs.com/DreamDrive/p/5413408.html http://www.cnblogs.com/DreamD ...
- Java abstract class 和 interface 的区别
Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...
- [Effective JavaScript 笔记]第18条:理解函数调用、方法调用及构造函数调用之间的不同
面向对象编程中,函数.方法.类的构造函数是三种不同的概念. JS中,它们只是单个构造对象的三种不同的使用模式. 三种不同的使用模式 函数调用 function hello(username){ ret ...
- C++中构造函数调用构造函数
今天想做道矩阵的题目时,却卡在一些编程细节上了,找了好久才发现原来是在构造函数处出了问题,然后上网百度了下,发现这篇文章说得很好:从一道题谈C++中构造函数调用构造函数,很棒! 还补充一点: 看来自己 ...
- C++ 全局构造函数调用的顺序
C++的全局类和静态类的构造函数是在main函数之前调用的.但是,不同的类的构造函数以什么顺序调用呢? 对于g++编译器来说,这个顺序是由链接时,文件顺序决定的. 我们用一个例子来说明这一点. 我们有 ...
- java abstract类和abstract方法
Example5_12.java abstract class A { abstract int add(int x,int y); int sub(int x,int y) { return x-y ...
- 你不知道的JavaScript--Item8 函数,方法,构造函数调用
1.函数调用 Function绝对是JavaScript中的重中之重.在JavaScript中,Function承担了procedures, methods, constructors甚至是class ...
- C++类中一个构造函数调用另一个构造函数
class A { int a; int b; int c; public: A(int aa, int bb) : a(aa), b(bb),c(0) { cout << "a ...
随机推荐
- git .gitignore文件
.gitignore ! /* 忽略所有的文件 !/pages/ 添加根目录下的所有文件被跟踪
- rsync同步目录
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X) -r, --recursive recurse into directories - ...
- centos 配置puTTY rsa自动登录
vim /etc/ssh/sshd_config, 下面三行去掉注释符号# RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysF ...
- win10和ubuntu16.04双系统时间同步
在win10安装了ubuntu双系统,发现在两个系统见时间相差8个小时,这是由于windows和和ubuntu对于从主板取得时间后的处理方式不同,如果你把位置设为上海,ubuntu总是把主板时间当作u ...
- eclipse基于git上传项目到码云上
此文章只讲如何把项目上传到码云上面,前提是你的项目已经用git创建好了. 关于如何用git创建项目,请读者见我博客的另一篇文章. 继续:右键点击ssm [ssm master]项目-->选择Te ...
- C/C++基础----重载运算与类型转换
非成员版本 data1 + data2: operator+(data1, data2); 成员版本 data1 += data2: data1.operator+=(data2); 不建议的重载 逻 ...
- Inno Setup 脚本
给你个我用的例子: Delphi/Pascal code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 ...
- 信息安全-加密:RAS 加密
ylbtech-信息安全-加密:RAS 加密 1.返回顶部 1. RSA 是不对称的加密(加密密钥和解密密钥不同 其中 一个为公钥,一个为私钥): 公钥和私钥的产生是基于一对很大的素数(十进制来说 ...
- Centos7.0根分区扩容
添加一块10G的硬盘 查看磁盘大小 # df -Th 查看物理卷组 # vgdisplay 查看逻辑卷 # lvs 查看磁盘信息 # fdisk -l 对添加的10G硬盘分区 # fdisk /dev ...
- Mybatis 系列8-结合源码解析select、resultMap的用法
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...