来自java中用户定义包的访问方法

时间:2014-01-04 05:53:23

标签: java methods package

这是我的包算术,里面有一个名为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));

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

2 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:0)

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

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

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

public class Arith{

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