java方法和构造函数不能应用
问题描述:
我打算制作一个程序,询问用户他们要在车库中存储多少车辆,并让用户放置车辆的信息并将其存储在数组中,这里是代码:java方法和构造函数不能应用
public class Main {
static class veh {
int roda;
String warna;
String merk;
public veh(int roda, String warna, String merk){
this.roda = roda;
this.warna = warna;
this.merk = merk;
}
private void setRoda(){
}
private void setWarna(){
}
private void setMerk(){
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Pemilik Garasi\t: ");
String nama = in.nextLine();
System.out.print("NIM\t\t\t\t: ");
String nim = in.next();
System.out.print("Kelas\t\t\t: ");
String kls = in.next();
System.out.print("Masukkan Luas Garasi\t:");
int luas = in.nextInt();
veh[] data = new veh[luas];
System.out.println("============================");
for (int i = 0; i < luas; i++) {
veh vehicle = new veh();
System.out.println("Masukkan Data Kendaraan Ke " + (i + 1));
System.out.print("Jumlah Roda\t: ");
vehicle.setRoda(in.nextInt());
System.out.print("Warna\t\t: ");
vehicle.setWarna(in.next());
System.out.print("Merk\t\t: ");
vehicle.setMerk(in.next());
data[i] = vehicle;
}
System.out.println("====== GARASI PRIBADI ======");
System.out.println("Milik \t: " + nama);
System.out.println("NIM \t: " + nim);
System.out.println("Kelas \t: " + kls);
System.out.println("============================");
for (int i = 0; i < luas; i++) {
System.out.println("Kendaraan Ke " + (i + 1));
System.out.println("Jumlah Roda\t : " + data[i].roda);
System.out.println("Warna\t\t : " + data[i].warna);
System.out.println("Merk\t\t : " + data[i].merk);
System.out.println("--------------------------");
}
}
}
当我编译它,我在此行得到了一个错误:
veh vehicle = new veh();
vehicle.setRoda(in.nextInt());
vehicle.setWarna(in.next());
vehicle.setMerk(in.next());
我真的不知道getter/setter方法是如何工作的,我是用Java编程语言新,做我写错了什么?
答
要调用不带参数的构造中,为了做到这一点 你需要重载它,因此,声明另一个构造函数没有参数。
-
setter和getters或封装的概念通常是防止直接访问变量本身,并使用函数修改或获取它们的值。你的二传手需要一个参数并设置你想要的值 并且吸气机返回值。
public class Main { static class veh { private int roda; private String warna; private String merk; public veh(){} public veh(int roda, String warna, String merk){ this.roda = roda; this.warna = warna; this.merk = merk; } public void setRoda(int newRoda){ roda = newRoda; } public void setWarna(String newWarna){ warna = newWarna; } public void setMerk(String newMerk){ merk = newMerk; } public void getRoda(){ return roda; } public void getWarna(){ retun warna; } public void getMerk(){ return merk; } }
谢谢,我需要的,但确实真的有必要的干将?我试图将void setter改为private,并且根本没有放置getter,并且它也可以工作。 –
这个想法是为了让外界和会员本身都可以访问setter和getters。现在在你的情况下,veh类的成员可以从main访问,因为main也是这个类的成员,因此可以访问它的所有成员和方法。 –
因此,如果我只有一个java文件,并且这两个类都在主类中,那么仅使用私有类的setter将会起作用? –