我有一个基类GameObject,它有一个成员
static Cell **grid;
我还有一个派生类Character,它是另一个类Player的基类。所以我的问题是:GameObject,Character和Player类的所有对象都可以访问同一个网格吗?
答案 0 :(得分:3)
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
noDep = list_nodep[position];
Bundle bundle = new Bundle();
bundle.putString("NO_DEP", noDep);
bundle.putString("DATE", date);
bundle.putString("USERNAME", username);
bundle.putString("DB_IP", dbIP);
bundle.putString("DB_NAME", dbName);
bundle.putString("DB_USER", dbUsername);
bundle.putString("DB_PASS", dbPassword);
bundle.putString("SERVER_IP", serverIP);
PlaceholderFragment fragment = new PlaceholderFragment();
fragment.setArguments(bundle);
return fragment;
}
是 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_line_detail_tabs, container, false);
activity = (LineDetailTabs) getActivity();
noDep = getArguments().getString("NO_DEP");
date = getArguments().getString("DATE");
username = getArguments().getString("USERNAME");
dbIP = getArguments().getString("DB_IP");
dbName = getArguments().getString("DB_NAME");
dbUsername = getArguments().getString("DB_USER");
dbPassword = getArguments().getString("DB_PASS");
serverIP = getArguments().getString("SERVER_IP");
loadData(noDep, date, username, dbIP, dbName, dbUsername, dbPassword);
tvHeader = (TextView) rootView.findViewById(R.id.txtHeader);
tvPO = (TextView) rootView.findViewById(R.id.txtPO);
//...
return rootView;
}
,是 Player
。所以是的,他们都可以访问静态Character
。
......当然受到访问保护(如Sam所指出)。因此,您需要在GameObject
或grid
区域内声明grid
以确保此为真,此外,您需要使用public
或{{1来声明继承模式:
protected
答案 1 :(得分:1)
基类的静态类成员是否可用于类层次结构中的直接派生类,派生程度最大的类或其间任何其他类的规则取决于:
静态类成员是公共的,受保护的还是私有的。
并且,在继承链中,每个类是否将基类作为公共类,受保护类或私有类继承。
所以问题的答案是:依赖。取决于这些因素。
答案 2 :(得分:1)
我相信除非您明确使用受保护的修饰符,否则此属性将被视为私有。在您的示例中,您没有使用受保护的或公开作为前缀,因此它将被视为私有,因此无法在派生类中访问。