gpt4 book ai didi

java - 派生类中的变量可能尚未初始化(使用构造函数)

转载 作者:行者123 更新时间:2023-12-02 01:14:34 24 4
gpt4 key购买 nike

我是 Java 编程新手,我正在尝试尝试继承和构造函数。

我的父类:

class user{

private String name;
private float balance;
private int accno;
private int passw;

public String getName()
{
return name;
}
.
.
.
//getters and setters for the remaining variables.
}

我的派生类:

class userFunct extends user
{

userFunct(int accno,String name,int passw,float bal){ //parametrized constructor

super.setPassw(passw);
super.setName(name);
super.setAccno(accno);
super.setBalance(bal);
}

在我的主程序中,我这样做:

public static void main()
{
userFunct obj=new userFunct(accno,name,passw,bal); //Creating an object userFunct
.
.
.
}

我收到一条错误消息

variable accno may not have been initialized

现在,由于这有很多行,我编写了一小段代码

import java.util.*;
import java.io.*;

class a{
public int x;

}

class b extends a{
/*static*/ void pri(a obj)
{
System.out.println("Class b"+obj.x);
}
b(int num)
{
super.x=num;
}
}


public class Main
{
int num=9;
public static void main(String[] args) {

b objb=new b(9);
objb.pri(objb);
}
}

这工作正常,输出正确。当我比较这两个代码时,我无法发现错误。

我不知道这是否是我的一些愚蠢的错误,或者是否有一些我未能理解的基本概念。不管怎样,我想知道这里发生了什么

最佳答案

首先,我认为比所提出的问题更重要的一点是:请从学习之初就认真对待代码中的命名约定旅行。您可能会认为啊..现在不重要了..我对其他东西感兴趣..但请始终根据命名约定和良好实践来命名您的变量/类/方法,否则您很容易就会习惯这一点..即使在 Java 行业工作了大约十年之后,我认为正确的命名仍然是最重要的事情之一,即使是高级工程师也缺乏行为模式。从一开始就保持代码干净。

我已经在 IntelliJ 中重写了您的第一个问题,并确保我实现了相应的 getter/setter,并初始化了传递给 userFunct 的所有变量在我传递它们之前构造函数。

类似于

    public static void main(String[] args) {
int accno=1;
String name="test";
int passw=1234;
float bal=2f;
userFunct obj=new userFunct(accno,name,passw,bal);
}

..我没有收到任何编译时警告或错误。

确保初始化传入 userFunct 构造函数的所有内容,并且已正确编写 setter 和 getter。

关于java - 派生类中的变量可能尚未初始化(使用构造函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58879081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com