java私有属性给值是默认值吗
时间: 2024-09-19 20:05:16 浏览: 81
在 Java 中,当你为私有(private)属性赋初值时,并非默认自动设置为默认值。私有属性意味着该变量只能在声明它的类内部访问。如果你没有显式地在构造函数或其他公共方法中提供初始值,那么这个私有属性会保持其默认值,对于基本数据类型通常是0、null(引用类型),或者是特殊类型的默认实例(如 `String` 的空字符串 "")。
如果你想在创建对象时就给私有属性设置特定的默认值,你需要在类的构造函数中初始化它。例如:
```java
public class MyClass {
private String myProperty = "default value";
// 构造函数
public MyClass(String initialValue) {
if (initialValue != null) {
myProperty = initialValue;
}
}
}
```
在这个例子中,如果传入了 `initialValue`,则会用那个值初始化 `myProperty`;如果没有提供,则默认为 `"default value"`。
相关问题
定义一个Division类(除法),类中定义两个int类型的私有成员变量dividend(被除数)和 divisor(除数),默认值都为1。定义四个公有方法setDividend(int mDividend )、getDividend()、setDivisor(int mDivisor)和getDivisor(),用于对私有属性进行设置和访问。在setDivisor(int mDivisor)方法中对传入的参数进行检查,如果传入值为零,则打印“除数不能为零”,如果不为零,才将其设置为divisor属性的值。 定义DivisionTest测试类,在类的main()方法中创建Division对象,分别调用setDividend(int mDividend)和setDivisor(int mDivisor)方法给两个私有属性dividend和divisor赋值,然后打印出dividend和divisor的结果。
下面是Division类和DivisionTest测试类的代码:
```java
public class Division {
private int dividend = 1; // 被除数,默认为1
private int divisor = 1; // 除数,默认为1
public void setDividend(int mDividend) {
dividend = mDividend;
}
public int getDividend() {
return dividend;
}
public void setDivisor(int mDivisor) {
if (mDivisor == 0) {
System.out.println("除数不能为零");
} else {
divisor = mDivisor;
}
}
public int getDivisor() {
return divisor;
}
}
public class DivisionTest {
public static void main(String[] args) {
Division division = new Division();
division.setDividend(10);
division.setDivisor(0); // 这里传入了除数为0,会打印“除数不能为零”
division.setDivisor(2);
System.out.println("被除数为:" + division.getDividend());
System.out.println("除数为:" + division.getDivisor());
}
}
```
输出结果为:
```
除数不能为零
被除数为:10
除数为:2
```
用java常见一个手机类phone,手机类包含a和b两个私有属性并定义属性的setter和getter方法以及一个全参构造方法a和一个无参构造方法b
在Java中,你可以创建一个名为Phone的类来表示手机,它通常会包含私有的实例变量(即属性)。这里是一个简单的例子:
```java
public class Phone {
// 私有属性(成员变量)
private String brand; // 属性 a,代表品牌
private int modelYear; // 属性 b,代表型号年份
// 提供属性的访问器(getter方法)
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
// 提供属性的修改器(setter方法)
public int getModelYear() {
return modelYear;
}
public void setModelYear(int modelYear) {
this.modelYear = modelYear;
}
// 全参构造方法,用于初始化所有属性
public Phone(String brand, int modelYear) {
this.brand = brand;
this.modelYear = modelYear;
}
// 无参构造方法,方便通过new关键字直接实例化
public Phone() {
this.brand = "默认品牌";
this.modelYear = 0; // 默认值可以自定义
}
}
```
在这个例子中,`getBrand()` 和 `getModelYear()` 方法用于获取属性值,而 `setBrand(String)` 和 `setModelYear(int)` 方法则允许外部代码改变这些属性。有了这两个构造函数,你可以根据需要创建一个新的Phone对象,可以直接提供所有参数或者仅指定部分参数。
阅读全文