有参的构造方法执行了?
按照这节演示来看,是不是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());
}
}