java笔记 private, protected,publlic, 默认

在这里插入图片描述

一.Private

private是私有的,其实是在自己的类里面调用

class A
{
    
    
    private int x = 1;

    public void show()
    {
    
    
        System.out.println(this.x);
    }
}

class text
{
    
    
    public static void main(String[] args)
    {
    
    
        A a = new A();
        a.show();
    }
}

这是完全合法的

二.Protected

被 protected 修饰的成员对于本包和其子类可访问

什么是访问,就是通过自己的子类的对象或者同一个包中的类对象来调用这个函数

class A
{
    
    
    protected void show()
    {
    
    
        System.out.println("被调用了");
    }
}

class B extends A
{
    
    }

class text
{
    
    
    public static void main(String[] args)
    {
    
    
        B b = new B();
        b.show();
    }
}

在这里插入图片描述


如果在同一个包中调用(继承关系)

类A

package bao;

public class A
{
    
    
    protected void show()
    {
    
    
        System.out.println("被调用了");
    }
}

类B继承A
在这个类中我们用B自身的类调用show函数

package bao;

public class B extends A
{
    
    
    public void Show()
    {
    
    
        this.show();
    }
}

主类

package bao;

public class text {
    
    

    public static void main(String[] args)
    {
    
    

        B b = new B();				//实例化Son1类
        b.show();
    }

}

在这里插入图片描述


同一个包内(非继承关系):

类A

package bao;

public class A
{
    
    
    protected int X = 520;
}

类text

package bao;

public class text
{
    
    
    public static void main(String args[])
    {
    
    
        A a = new A();
        System.out.println(a.X);
    }
}

这里在text类中利用a调用x是合法的


如果是在不同的包中调用protected成员:

bao中类A

package bao;

public class A
{
    
    
    protected int X = 520;
}

bao1中类text

package bao1;
import bao.*;

public class text
{
    
    
    public static void main(String args[])
    {
    
    
        A a = new A();
        System.out.println(a.X);
    }
}

会报错
在这里插入图片描述

这里的访问其实是在别的类中能调用被修饰的类的成员

三.Public

这个关键字就是不管这个类是不是继承关系,不管是不是一个包内的都可以进行调用

四.默认

如果是什么也不加,就是只能是包内访问

猜你喜欢

转载自blog.csdn.net/yogur_father/article/details/108782336
今日推荐