【转】Java中类的构造方法
转自:https://blog.csdn.net/zw1996/article/details/52878270
constructor;构造函数。
- 1
在创建对象的时候,对象成员可以由构造函数方法进行初始化。
new对象时,都是用构造方法进行实例化的;
例如;Test test = new Test("a");//Test("a");其中这个就是构造函数,“a”为构造方法的形参;
- 1
- 2
- 3
构造方法的方法名必须与类名一样。
构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
构造方法不能作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。
构造方法不能由编程人员调用,而要系统调用。
构造方法可以重载,以参数的个数,类型,或排序顺序区分。
- 1
- 2
- 3
- 4
- 5
具体用法,代码实现。
1;单个构造函数方法;’
2;多个构造函数方法
(例子为;带参数与不带参数)
3;关于继承类的构造方法的调用;
先看事例;
我第一次看到结果的时候好惊讶的,怎么都调用了哈。看了知识点才知道。
在Subtine的主方法中只调用子类构造方法,实例化子类对象并且在子类构造方法中,没有调用父类的构造方法的任何语句。但是在实例化对象时,它相应的调用了父类构造方法,在结果中还可以看到调用构造方法的顺序,首先是顶级,再继续往下直达本身类。也就是说实例化子类的时候,要首先实例化父类对象,然后在实例化子类对象,所以在子类构造方法调用父类构造方法前,父类已经实例化了。
拓展一下。
package text_4_1;public class Parent {Parent(int a){//就是将无参数构造方法改成有参数的。System.out.println("调用父类Parent构造方法" + a);}
}package text_4_1;public class Subparent extends Parent{Subparent(){System.out.println("调用子类Subparent的构造方法");}
}package text_4_1;public class Subtine extends Subparent{Subtine(){System.out.println("调用子类Subtine构造方法");}
}package text_4_1;public class Main {public static void main(String[] args){Subtine subtine = new Subtine();}
}
- 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
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
这样的代码将会报错;//就是将父类Parent类无参数构造方法改成有参数的。
Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//隐式的超级构造函数()是未定义的。必须显式地调用另一个构造函数
- 1
- 2
意思就是在子类调用构造函数时,必须先调用父类构造函数,因为无参数的构造函数,编译器会自动调用,也就是第一种情况不会报错。但是有参数的,就必须要利用Super的方法来调用。如果不进行调用那么将会报错。
将Subparent类改成。
package text_4_1;public class Subparent extends Parent{Subparent(){super(5);//调用了其父类就不会报错了。System.out.println("调用子类Subparent的构造方法");}
}
//备注一下,调用父类构造方法就是;super();//就ok了。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
还补充一点,关于构造方法的可扩展性;
查看过源码的应该都发现过jdk的编码人员会在一个类中建立多个构造方法;然而他的作用就是提高可扩展性;
这么多构造方法,他们之间并且还有联系;通过this()来调用自己类的其他构造方法,来减少代码的复制,增大程序的可读性;
至于怎么来进行封装;举个例子;
构造方法的可扩展性就表示在这里;
可以多多个构造方法;根据不同的参数决定调用哪个;带来很大的可扩展性
刚试了一下notepad++;然而直接爆出中文乱码,搞了好久才搞清楚;
原因是;国标码和ANSI之间的不兼容;
因为刚学,有什么不足的后期补上。
望路过的大神,指点一二。
【转】Java中类的构造方法相关推荐
- java中构造方法只能有一个_对Java中类的构造方法描述正确的是()A.如果在类中没有定义,Java就提供一个默认的构造方法B.只能...
对Java中类的构造方法描述正确的是()A.如果在类中没有定义,Java就提供一个默认的构造方法B.只能 更多相关问题 猛虎噬人卣是_______时期的陶塑代表作品. 静态网页是指网页的内容是固定的, ...
- 关于java结构中描述正确的是_下列关于Java中类的构造方法的描述,正确的是()...
A:构造函数没有返回值,也不能用void修饰.如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的错误. C:super(参数):调用父类 ...
- 关于java构造方法的描述_下列关于Java中类的构造方法的描述,正确的是()
A:构造函数没有返回值,也不能用void修饰.如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在运行时将产生找不到构造方法的错误. C:super(参数):调用父类 ...
- java中类与对象回顾总结
文章目录 一 类与对象的定义 二 类的成员变量 总结: 三 类的方法 (1)普通成员方法 (2)静态成员方法 类与对象的关键E点: 疑难解答: 四 private封装 五 setter与getter ...
- java中类的方法分为 类方法_Java中类的方法成员分为()方法和实例方法。
Java中类的方法成员分为()方法和实例方法. 答:第一空: 类 下列各项中,不属于直接材料预算的编制基础的有( ). 答:直接人工预算 现金预算 社会主义基本制度的确立( ?). 答:是中国历史上最 ...
- java中类成员的限定词_Java类中的限定词
java语言中有四种不同的限定词,提供了四种不同的访问权限. 1) private 类中限定为private的成员,只能被这个类本身访问. 如果一个类的构造方法声明为private,则其它类不能生成该 ...
- Java中类、常量、变量、方法名等命名规则
Java中类.常量.变量.方法名等命名规则 命名规则: 命名由字母.数字.下划线.美元符号($)构成. 命名不可以数字作为开头. 长度无限制,但不可存在空格. 大小写所表述内容含义不同. 命名不可与J ...
- java 对象初始化属性,JAVA中类属性的初始化
我们知道一个类(class)要被使用必须经过装载,连接初始化这样的过程.下面先对这三阶段做一个简单的描述,之后会结合一个简单的例子来说明java中类的初始化过程. 在装载阶段,类装载器(Bootstr ...
- Scala特质trait具备Java中类和接口的功能
特质trait具备Java中类和接口的功能
最新文章
- softmax layer 简单理解以及实际例子【有白话讲解】
- 三峡大学陈迪马:土壤微食物网对全球变化的响应与反馈
- 配置一台计算机所需的东西,攒一台计算机需要的配置
- mysql8.0导出带数据的库表_MySQL8.0数据库导出与备份
- python语言程序设计西安电子科技大学答案-徐悦甡 | 个人信息 | 西安电子科技大学个人主页...
- spring boot 完整集成jsp。(亲测可用)
- 网络设备配置与管理--使用VTP实现扩展VLAN配置
- 曲线行驶最后什么时候回正_曲线行驶总压线?老教练给你支支招,看完觉得太简单了……...
- Activity 之生命周期
- mysql 添加ios表情符号_mysql - 如何用PHP匹配并替换iOS标准的emoji表情符号
- bp神经网络和softmax原理_BP人工神经网络常用传递函数
- 【恋上数据结构】串匹配算法(蛮力匹配、KMP【重点】、Boyer-Moore、Karp-Rabin、Sunday)
- 汉高澳大利亚sinox2014电影播放flash最好的办法是安装游戏windows文本firefox
- 解决 应用程序无法启动(0xc000007b),请单击确定关闭应用程序
- PLC编程指南_变量命名规则介绍
- 菱形c语言思路,c语言打印菱形(c语言打印菱形思路)
- 仿比心源码,uniApp自适应手机屏幕高度
- 自动化一切!那些我每天使用的快捷自动化工作
- 计算机硬盘对计算机速度的影响,固态硬盘会不会影响整个电脑的运行速度
- 简单理解2台主机数据通信过程