【问题标题】:Why can't I make this (SectionsPagerAdapter) class private?为什么我不能将这个 (SectionsPagerAdapter) 类设为私有?
【发布时间】:2018-02-13 17:25:40
【问题描述】:
private class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount () {
        return 4;
    }

}

我正在学习 Head First Android 教程,但我无法将此课程设为私有?在android上有没有不同的方法可以做到这一点?我应该为超类添加参数吗?

【问题讨论】:

  • 这个班是在另一个班里上课吗? AFAIK 这是将类设为私有的唯一用例,否则它们必须至少是包私有的。
  • 除了 M.Warren 所说的之外,我很好奇您为什么需要将课程设为私有?也许您希望它是最终的?

标签: java android class


【解决方案1】:

在自己的文件中自包含的类不能被声明为private,因为它们不能被任何其他类访问,实际上使它们无用。唯一可以声明一个类private 的情况是它是否是另一个类的子类,例如

public class ClassA {
    private ClassB myInstance = new ClassB();

    private class ClassB {
        public ClassB() {}
    }
}

在这种情况下,ClassB 仅对 ClassA 可见,并且只能由 ClassA 使用。如果您的类在其自己的文件中是自包含的,则它可以拥有的最大隐私是package-private,即没有说明符:

package com.example.myPackage;

class ClassB {
    ClassB() { }
}

在这种情况下,ClassB 只能被包含在 com.example.myPackage 包中的任何其他类访问和实例化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2013-12-17
    • 1970-01-01
    相关资源
    最近更新 更多