private 声明的对象能被.直接引用问题

private class ViewHolder extends RecyclerView.ViewHolder {

    private TextView tv_name;

    public ViewHolder(View itemView) {
        super(itemView);
        tv_name = itemView.findViewById(R.id.tv_name);
    }
}

      @Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    if (holder instanceof ViewHolder) {
       Bean bean = mlist.get(position);
        ((ViewHolder) holder).tv_name.setText(bean.getTdi_name());
    }
}

    为什么我在ViewHolder类private声明的控件 能直接被.调用,有点无法理解,还望指教。

因为你这个类是内部类,内部类的private变量是可以被外部类直接访问。参考下:https://www.zhihu.com/question/54730071

在类内部可以访问私有变量,即使是通过类实例,也可以访问。

private修饰全局变量的本来就是只能在当前类中使用啊

对于一个类的私有变量,在其作用域范围内可被使用;其他类不可直接访问该类的私有变量。

public class Test1{
private void f(){
System.out.println ("private f()");
}
public static void main (String[] args) {
Test1 po=new Test1();
po.f();
}
}

疑问:为何在类Test1中,创建他本身的对象的时候,其对象的引用可以直接调用类Test1中的private方法?

public class Test2{

public static void main (String[] args) {
PrivateTest po=new PrivateTest();
po.f();
}
}
class PrivateTest{
private void f(){
System.out.println ("private f()");
}
}

上述代码中类PrivateTest中的方法为private,故po.f()无法调用。

当前类下,private可以访问

private是对类内可见;而那个点的引用就在同一个类里,自然可以访问了

当前类里面声明的private可以被访问,离开了这个类就不可以了

private表示私有类,public表示公有。在同一个类下,私有类本来就可以调用。

建议你去了解一下 访问修饰符(public,private,protected,internal,sealed,abstract) 以及 内部内的几种实现 ,如果你了解这些后还是没知道这是为什么,那就去开视频吧~