好的,所以我在多年后重新访问java,当我发现我在下面的代码片段中出错时,我只是尝试了一些随机程序。有人可以告诉我如何解决这个问题吗?我知道静态方法将无法访问非静态变量,但我为它创建了一个实例吗?此外,我没有找到任何其他问题,所以尽量帮助我。
import java.io.*;
public class phone
{
int x=6;
int getx()//I also tried using this function but everything in vain
{
return x;
}
}
public class Testing_inheritance extends phone
{
public static void main (String args[])throws IOException
{
phone xy=new phone();
int y=phone.x;
y+=10;
System.out.println("The value of x is " +y);
}
}
答案 0 :(得分:3)
您可能打算访问您创建的实例的实例变量:
phone xy = new phone();
int y = xy.x;
由于x
不是静态变量,因此如果不指定phone
类的实例,则无法访问它。
当然这也会失败,除非你将x
的访问级别更改为public
(这是可能的但不可取的 - 你应该使用getter和setter方法而不是直接操作实例变量来自在课外)。
答案 1 :(得分:1)
x
不是static
。您需要通过对象引用来访问它。
做
int y = xy.getx(); //could do xy.x, but better to access through method
此外,最好坚持使用Java命名约定
答案 2 :(得分:0)
几乎在那里,我做了一些小但非常重要的改变,我希望你得到这个,否则只是问; - )
Phone.java
public class Phone //<--- class with capital letter always
{
int x=6;
int getx()//I also tried using this function but everything in vain
{
return x;
}
}
Testing_inheritance.java
import java.io.*;
public class Testing_inheritance extends Phone
{
public static void main (String args[])throws IOException
{
Phone xy=new Phone();
int y= xy.getx(); //<--- principle of encapsulation
y+=10;
System.out.println("The value of x is " +y);
}
}
OR私人内部课程:
import java.io.IOException;
public class Phone {
int x = 6;
int getx()// I also tried using this function but everything in vain
{
return x;
}
private static class Testing_inheritance extends Phone {
public static void main(String args[]) throws IOException {
Phone xy = new Phone();
int y = xy.getx();
y += 10;
System.out.println("The value of x is " + y);
}
}
}