Java中类的构造方法
constructor;构造函数。
在创建对象的时候,对象成员可以由构造函数方法进行初始化。
new对象时,都是用构造方法进行实例化的;
例如;Test test = new Test("a");
//Test("a");其中这个就是构造函数,“a”为构造方法的形参;
构造方法的方法名必须与类名一样。
构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
构造方法不能作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。
构造方法不能由编程人员调用,而要系统调用。
构造方法可以重载,以参数的个数,类型,或排序顺序区分。
具体用法,代码实现。
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();
}
}
这样的代码将会报错;//就是将父类Parent类无参数构造方法改成有参数的。
Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
//隐式的超级构造函数()是未定义的。必须显式地调用另一个构造函数
意思就是在子类调用构造函数时,必须先调用父类构造函数,因为无参数的构造函数,编译器会自动调用,也就是第一种情况不会报错。但是有参数的,就必须要利用Super的方法来调用。如果不进行调用那么将会报错。
将Subparent类改成。
package text_4_1;
public class Subparent extends Parent{
Subparent(){
super(5);//调用了其父类就不会报错了。
System.out.println("调用子类Subparent的构造方法");
}
}
//备注一下,调用父类构造方法就是;super();//就ok了。
还补充一点,关于构造方法的可扩展性;
查看过源码的应该都发现过jdk的编码人员会在一个类中建立多个构造方法;然而他的作用就是提高可扩展性;
这么多构造方法,他们之间并且还有联系;通过this()来调用自己类的其他构造方法,来减少代码的复制,增大程序的可读性;
至于怎么来进行封装;举个例子;
构造方法的可扩展性就表示在这里;
可以多多个构造方法;根据不同的参数决定调用哪个;带来很大的可扩展性
刚试了一下notepad++;然而直接爆出中文乱码,搞了好久才搞清楚;
原因是;国标码和ANSI之间的不兼容;
因为刚学,有什么不足的后期补上。
望路过的大神,指点一二。
Java中类的构造方法的更多相关文章
- java中类的构造方法出错点
大家请看下面的这个代码 package ppt_test; public class test1 { public static void main(String args[]) { Foo obj1 ...
- java中类的创建及初始化过程
java中类的创建及初始化过程无外乎两种情况,其一为单类的创建及初始化,其二具有继承关系的父子类创建及初始化过程. 首先说简单的,单类的创建及初始化过程.在java中我们都知道绝大部分对象的创 ...
- java 中类的加载顺序(转)
1.虚拟机在首次加载Java类时,会对静态初始化块.静态成员变量.静态方法进行一次初始化 2.只有在调用new方法时才会创建类的实例 3.类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始 ...
- java中类的初始化和对象的初始化
静态的属于全局静态区,这个部分独立存在,不管是成员还是块,都是静态的,大家地位相等,先到先得. 然后是成员初始化,这个部分在类的构造函数前初始化,因为编译器(或者设计者)可能认为构造函数调用了这个成员 ...
- Java中类的加载、连接和初始化
Java中类的加载.连接和初始化 类的加载.连接和初始化 先介绍一下JVM和类 JVM和类: 当我们调用Java命令运行某个Java程序时,该命令将会启动一个Java虚拟机进程,不管该Java程序有多 ...
- Java 中类与类之间的关系
在java中类和类之间的关系基本上有依赖.关联.聚合.组合等 一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在J ...
- Java中类的继承,属性和方法的四种修饰符的作用范围,final关键字,java的三大特点中的2个:封装和多态,以及多态的一个设计模式,模板方法模式(template method)
(一)Java中的继承: 关于继承,在Java中类的继承只能是单继承,不像C+++那样灵活,可以多继承,多继承的后果就是各种关系乱套,就相当于一个孩子有2个母亲一样,社会关系的复杂,不利于程序后期的开 ...
- 面向对象的编程思想和Java中类的概念与设计
面向对象的编程思想学习,面向对象内容的三条主线;1.java类及类的对象2.面向对象的三大特征3.其他关键字学习内容:3.1面向对象与面向过程面向对象与面向过程在应用上的区别 Java中类的概念与设计 ...
- Java中类与类的关系
在java中类和类的关系大致分三种:泛化.关联.依赖. 1. 泛化(Generalization) "XX是一个XX"关系(is a),通常使用的关键词为 extends.impl ...
随机推荐
- 使用ADO.NET访问、查询和操作数据库
ADO.ENT的主要组件 提供两个组件,用来访问和处理数据:.NET Framework 数据程序和DataSet(数据集) .NET Framework:是专门为数据处理及快速地只进,只读访问数据而 ...
- linux150条命令
●线上查询及帮助命令(2 个)man help ●文件和目录操作命令(13 个) ls tree pwd mkdir rmdir cd touch cp mv rm ln find rename ●查 ...
- linux:ssh远程调用tomcat脚本时候出错
我们都知道,使用ssh在另一台机子执行一个ssh文件的语句是酱紫的 ssh root@1.9.7.56 "chmod 777 /opt/script/tomcatStop.sh ; sh / ...
- oo作业总结(二)
概述 和前三次作业相比,这几次作业最大的不同是难度的飞跃.遗憾的是在这难度的变化面前,我自己却没有做好充分的准备,错误的低估了作业难度导致给自己带来了很多不必要麻烦和损失.接下来我将对它们进行说明(度 ...
- FPGA的GTP(aurora 协议)高速串行接口数据收发(转)
reference:https://blog.csdn.net/qq_40261818/article/details/83039829 PG046-Aurora 8B/10B Logicore I ...
- 通过powerdesiner导出sql,通过sql转mysql为oracle
1.导出sql文件 Database-->generate database-->确定 执行完就可以看到生成的语句了 2.将mysql的PDM转换为oracle File-->rev ...
- [Paper] LCS: An Efficient Data Eviction Strategy for Spark
Abstract Classical strategies do not aware of recovery cost, which could cause system performance de ...
- SQL server的高可用
SQL server 2012实现数据库中的表同步到局域网中的另外一个服务器上的数据库的方法: 1.发布.订阅功能 2.AlwayOn功能(最稳定.最优的方案) 3.修改程序,写两份数据,或者用触发器 ...
- java.lang.OutOfMemoryError: GC overhead limit exceeded
前端请求:{"code":400,"message":"Handler dispatch failed; nested exception is ja ...
- 批注@SuppressWarnings 的作用
J2SE 提供的最后一个批注是 @SuppressWarnings.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默. 一点背景:J2SE 5.0 为 Java 语言增加 ...