构造方法及其调用

来源:互联网 发布:python和node.js 编辑:程序博客网 时间:2024/05/19 20:40

构造方法知识点:
1、构造方法就是实例化对象时调用的方法,构造方法的调用是在创建一个对象时使用new操作进行的,用于完成对象的初始化工作。
2、当类定义中的构造方法都不是无参数构造方法时,编译器也不会为类设置一个默认无参数构造方法。如果此时无参数构造方法实例化一个对象,编译器
会报错。只有当类中没有定义任何构造方法时,编译器才会自动创建一个不带参数的构造方法
3、一个类被实例化的同时就会自动运行相应的构造方法,即便你不写,系统也会创建一个默认的构造方法。

4、在构造方法里可以调用除自身外的其他方法(静态的非静态的都可以)

一、在同一个类中

调用1

Test2.java

package Test6;

public class Test2 {
//无参数构造方法
public Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
public static void main(String[] args) {
//实例化对象Test2.调用无参数构造方法
Test2 test2=new Test2();
}
}

程序运行结果:


调用2

Test2.java

package Test6;
public class Test2 {
//无参数构造方法
public Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
public static void main(String[] args) {
//实例化对象Test2.调用无参数构造方法
Test2 test2=new Test2("1",2);
}
}

程序运行结果:


调用3

Test2.java

package Test6;
public class Test2 {
//无参数构造方法
public Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
public static void main(String[] args) {
//实例化对象Test2.调用无参数构造方法
Test2 test2=new Test2("1","2","3");
}
}

程序运行结果:


二、现在把无参数构造方法权限改为private

Test2.java

package Test6;

public class Test2 {
//无参数构造方法
private Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
public static void main(String[] args) {
//实例化对象Test2.调用无参数构造方法
Test2 test2=new Test2();
}
}

程序运行结果:


三、当实例化对象和构造方法不在同一个类中而且无参数构造方法的权限为public时

Test2.java

package Test6;
public class Test2 {
//无参数构造方法
public Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
}

Main_00.java

package Test6;

public class Main_00 {
public static void main(String[] args) {
Test2 test2=new Test2();
}
}

程序运行结果


四、

当实例化对象和构造方法不在同一个类中而且无参数构造方法的权限为private时

Test2.java

package Test6;
public class Test2 {
//无参数构造方法
private Test2(){
System.out.println("调用了我1");
}
//具有两个参数的构造方法
public Test2(String s,int a){
System.out.println("调用了我2");
}
//具有可变数量参数的构造方法
public Test2(String...strings){
System.out.println("调用了我3");
}
}

Main_00.java

package Test6;

public class Main_00 {
public static void main(String[] args) {
Test2 test2=new Test2();
}
}

程序运行结果


总结:由此看出,当在同一类中时,无论权限如何,都能够根据参数的不同进行调用构造方法。当在不同的类中时,如果权限设置为private私有的时,此私有构造方法不能被调用,转而去调用了可变参数数量的构造方法了。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 第一天上班别人教的学不会怎么办 老公出轨已经不想跟你爱爱了怎么办 妻子出轨丈夫为了孩子不离婚怎么办 妻子出轨分居死也不愿意离婚怎么办 拼多多个人卖家登录密码忘了怎么办 微信被限制添加更多订阅号了怎么办 知网复制粘贴的论文有格式怎么办 知网论文查询网站密码忘记了怎么办 开通了超级会员不能克隆好友怎么办 偷了家里好多钱去买手机了怎么办 中行信用卡短信邀请办白金卡怎么办 注册邮箱说邮箱地址已被注册怎么办 便利店开在小区里面没生意怎么办 微信支付密码忘了怎么办没银行卡 中行5月扣很多钱是怎么办 中银淘宝校园卡影响征信问题怎么办 中银E盾快到期了怎么办 京东e卡电子卡卡密泄漏怎么办 买错了京东e卡怎么办 京东购买手机激活后有问题怎么办 优购m9锁屏密码忘记了怎么办视频 中百仓储的购物卡过期了怎么办 武汉中百超市购物卡过期怎么办 已认证抵扣的发票发生退货怎么办 京东白条分期买手机额度不够怎么办 京东白条闪付手机不支持开通怎么办 拼多多不小心下两次单付款了怎么办 不小心给了京东快递差评怎么办 京东金融不小心卸载了怎么办 如果京东快递不小心完成订单怎么办 订机票时没有用常旅客卡怎么办 京东退货退款卖家已签收了怎么办 京东账号手机号换了密码忘了怎么办 qq飞车手游录像下载失败怎么办 手机知道qq号怎么破解密码怎么办 网上购物已付钱迟迟不发货怎么办 有人冒充微信头像和熟人借钱怎么办 微信红包输了50多万怎么办 脖子里的绳结接口磨脖子怎么办 母比格犬生了小狗毛色变了怎么办 母比格犬生了小狗毛色很差怎么办