父类
package PPRO.Custom.Integration;
public class eInvoice_BSSFormat {
protected void run(String[] param){
}
}
其他班级
package PPRO.Custom.Integration;
public class eInvoice_Archon extends eInvoice_BSSFormat{
}
另一个班级
package com.birchstreet.smwc.scheduler.jobs;
public class eInvoice_Archon extends PPRO.Custom.Integration.eInvoice_Archon implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
PPRO.Custom.Integration.eInvoice_Archon arc = new eInvoice_Archon();
arc.run(args);
}
eclipse显示问题是
eInvoice_BSSFormat类型的run(String [])方法不是 可见
我们无法更改现有文件仅在新文件中工作,我们无法使用此类对象使用
当我们使用这个问题解决了
eInvoice_Archon arc = new eInvoice_Archon();
但我们不能像这样只使用父引用变量 如何解决这个问题
答案 0 :(得分:0)
来自JLS 6.6.2. Details on protected Access
对象的受保护成员或构造函数可以从包外部访问,只能通过负责实现该对象的代码来声明它。
您的protected void run(String[] param)
方法受到保护,因此您只能在同一个包中或从实现您eInvoice_BSSFormat
的任何类中访问它。
使用以下内容:
package com.birchstreet.smwc.scheduler.jobs;
public class eInvoice_Archon extends PPRO.Custom.Integration.eInvoice_Archon implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
//PPRO.Custom.Integration.eInvoice_Archon arc = new eInvoice_Archon();
this.run(args);
}
}
答案 1 :(得分:0)
run()
方法为protected
,因此您只能在不同包中的子类中使用它
package A;
class Parent{
protected int x = 45;
}
package B;
import A.*;
class Child extends Parent{
public void access(){
x= 100; // works
}
public void method(){
Parent p =new Parent();
p.x = 150; // error
}
}