1

谁能告诉我这两个代码之间的主要区别是什么?

代码1:

       Fragment fragment = new NaviagtionFragment();
                fragmentTransaction.replace(R.id.pager, fragment);
                fragmentTransaction.commit();

代码2:

NavigationFragment fragment = new NavigationFragment();
                fragmentTransaction.replace(R.id.pager, fragment);
                fragmentTransaction.commit()
4

2 回答 2

3

这两个选项都实例化 aNavigationFragment并将其替换为 inside pager。所以在运行时完全没有区别。

唯一的区别在于编译时方法/实例变量的可见性。

声明

Fragment fragment

您不会看到NavigationFragment. 但是,如果您不使用 做任何其他事情fragment,则第一个选项非常好。

于 2013-11-01T11:11:55.927 回答
3

在第一种情况下,您将对象分配给基类,在第二种情况下分配给派生类。主要区别在于您不能在第一种情况下访问派生方法和属性,而只能访问来自基类型的派生方法和属性(没有强制转换)

于 2013-11-01T11:13:10.953 回答