我要使用java类track
和Session
。
赛道课......
package trackmanagement;
public class track {
private String trackName, networkingEventTime;
private Session morningSession, afternoonSession;
track(String name)
{
trackName = name;
}
public void alloteSession()
{
morningSession = new Session("Morning Session", trackName);
afternoonSession = new Session("Afternoon Session", trackName);
}
}
会话课......
package trackmanagement;
import java.util.ArrayList;
public class Session {
private String sessionName, relatedTrack, startTime, endTime;
private ArrayList<Slot> allotedSlots;
public Session(String name, String track)
{
sessionName = name;
relatedTrack = track;
}
public void morningSlots()
{
}
public String afternoonSlots()
{
return "";
}
}
在班级alloteSession
的方法track
中,我创建了两个名为Session
和morningsession
的班级afternoonsession
的对象。
课程Session
包含两种方法,即morningSlots
和afternoonSlots
。
我只想从morningSlots
对象访问morningsession
方法,而afternoonSlots
对morningsession
对象是私有的。
同样,应afternoonSlots
对象访问afternoonsession
方法,而morningSlots
对象afternoonsession
是私有的。
因此,方法应该有条件隐私。方法morningSlots
应该对morningsession
对象公开,而对afternoonsession
对象应该是私有的,反之亦然。
是否可以这样做,如果没有,请提出其他方法来实现这种设计。
答案 0 :(得分:4)
您可以创建2个类morningSession
&amp;而不是尝试从一个类或另一个类更改方法可见性。 afternoonSession
session
会延长session
。
slots()
可以是方法morningSession
的抽象类,需要在afternoonSession
&amp; session
。
从创建morningSession
时的实施角度来看,它是afternoonSession
或slots()
,但在这两种情况下,您都可以调用venue
方法来调用正确的方法< / p>
答案 1 :(得分:1)
你应该改变你的设计而不是尝试在Java中无法实现的东西:)
public abstract class Session {
public abstract String getSlots();{//try to have methods that describes a verb/action
}
public class MorningSession extends Session{
public abstract String getSlots(){
return "Morning slot received";
}
}
public class AfternoonSession extends Session{
public abstract String getSlots(){
return "Afternoon slot received";
}
}
通过执行此操作,您可以包装实现并让您的Child Classes Morning / AfternoonSession获取所需的插槽。