【问题标题】:Access method from user defined package in javajava中用户定义包的访问方法
【发布时间】:2014-01-21 22:36:30
【问题描述】:

这是我的算术包,里面有一个名为 arith.java 的文件

package arithmatic;

 public class arith{

     public int add(int a, int b){
     return(a+b);
     }
}

并在算术包外有一个文件packagedemo.java

import arithmatic.*;
public class packagedemo{

public void disp(int a, int b){

    System.out.println("Addition is : "+ add(a, b));
}

public static void main(String args[]){

    packagedemo pd=new packagedemo();
    pd.disp(20,10);
}
}

编译后给我错误,

packagedemo.java:6: cannot find symbol
symbol  : method add(int,int)
location: class packagedemo
            System.out.println("Addition is : "+ add(a, b));

我真的不明白为什么会出现这个错误请任何解决方案?

【问题讨论】:

    标签: java methods package


    【解决方案1】:

    通过简单的导入类,不能像这样直接访问类成员方法

    add(a, b)
    

    您首先需要创建arith 类的实例,然后使用该实例调用add 方法。像这样的:

    public void disp(int a, int b){
    
        arith arithObj = new arith();
        System.out.println("Addition is : "+ arithObj.add(a, b));
    }
    

    【讨论】:

    • 现在是说,packagedemo.java:6: 找不到符号 symbol: class artih location: class packagedemo artih ar=new arith(); ^
    • @Darpan 只需确保类名和包导入正确即可。
    【解决方案2】:

    您需要创建arith 的实例,因为add 方法是该类的实例成员。

    public void disp(int a, int b){
        Arith art= new Arith();
        System.out.println("Addition is : "+ art.add(a, b));
    }
    

    作为旁注,请遵循 java 命名约定,类名以大写字母开头。

    public class Arith{
    

    我猜你正在检查包级别的访问,在这种情况下,你正在为你的 add() 方法寻找 protected 修饰符。因此,当您在其他包中创建 Arith 实例时,您将无法访问该受保护成员。现在它是公开的,所以你可以使用它。

    【讨论】:

    • @SURESH ATTA 类名遗憾地以小写 arith 开头,而不是 Arith :-)
    • 我看到 OP 声明类 arith,所以我更正了它,因为我不能再犯同样的错误 :)
    • 在您提供的代码中没有仍然是 Arith art= new Arith();
    • 我提供了带有该更正的代码。没有使用 OP 给出的相同代码。
    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2012-10-15
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多