为了账号安全,请及时绑定邮箱和手机立即绑定

有参的构造方法执行了?

按照这节演示来看,是不是phone2创建时有参构造方法就执行了,但是却不能生效,就是并不能传参。没有传参怎么能说执行了呢?这中间的点在哪里?

如果是Telephone phone2=new Telephone(1.0f,1.8f,4.0f);程序还是会返回:

您输入的参数有问题,自动赋值4.0f

带参的构造方法Telephone执行了

就是说1.0f传给了screen,但是却不能输出,会报错说screen不能被访问。这中间发生了什么?

而且1.0f应该不能传给screen啊

package com.imooc;


public class Telephone {

private float screen;//通过private修改属性的可见性,目的是封装

private float cpu;

private float mem;

public float getScreen(){

return screen;

}

public void setScreen(float newScreen){

if(newScreen<4.0f){

System.out.println("您输入的参数有问题,自动赋值4.0f");

screen=4.0f;

}else{

screen=newScreen;

}

}

public Telephone(){

System.out.println("无参的构造方法执行了");

}

public Telephone(float newScreen,float newCpu,float newMem){

if(newScreen<4.0f){

System.out.println("您输入的参数有问题,自动赋值4.0f");

screen=4.0f;

}else{

screen=newScreen;

}

cpu=newCpu;

mem=newMem;

System.out.println("带参的构造方法Telephone执行了");

}


}

分界线========================================================


package com.imooc;


public class InitialTelephone {


public static void main(String[] args) {

// TODO Auto-generated method stub

//通过无参的构造方法创建对象

Telephone phone=new Telephone();

//通过带参的构造方法创建对象 并给对象中的实例变量赋初值

Telephone phone2=new Telephone(1.0f,1.8f,4.0f);

/*phone2.screen=6.0f;

System.out.println(phone2.screen);封装后不能直接访问数据,故失效,隐去*/

phone.setScreen(1.0f);

System.out.println("screen:"+phone.getScreen());

phone2.setScreen(6.0f);

System.out.println("screen:"+phone2.getScreen());


}


}


正在回答

1 回答

是不是没用到this,值传到其他变量了,贴段代码看看?

0 回复 有任何疑惑可以回复我~
#1

wshyzx 提问者

代码贴上了,你看看
2016-07-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

有参的构造方法执行了?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信