博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 相关内容使用(关键字 private default protect public)
阅读量:5350 次
发布时间:2019-06-15

本文共 3273 字,大约阅读时间需要 10 分钟。

总结一下java 相关的权限的意思

分类 同一个类中 同一个包中 不同包的子类 不同包的非子类
private
default
protected
public

Private

private使用的样例

class Test{        public static void main(String[] args){            Person person = new Person("Daming");            System.out.println(person.name);        }    }    class Person{        private String name;        Person(String name){            this.name = name;        }        public String getName(){            return this.name;        }    }

执行上诉代码的结果如下图所示:

1017814-20190608130737828-1509149101.png

通过图片可以了解到private修饰属性仅能在本类中使用。

private修饰的内容也不能在子类中使用:

class Test{    public static void main(String[] args){        subPerson person = new subPerson("Daming");     }    }class Person{    private String name;    Person(String name){        this.name = name;    }    public String getName(){        return this.name;    }}class subPerson extends Person{        subPerson(String name){        super(name);    }        public String ShowName(){        return name;    }}

1017814-20190608133451485-9243165.png

上诉代码表示子类中也不能继承private的变量。

default

default使用样例,default在使用的时候可以在通过一个包中使用,例如下面的代码:

package com.test.Demo;    class Person{        String name;            Person(String name){                this.name = name;        }            public String getName(){                return this.name;        }    }    public class Demo{        public static void main(String[] args){                Person person = new Person("Daming");                System.out.println(person.name);        }    }

上诉代码执行的结果如下:

1017814-20190608135933983-519066888.png

但是在不同的包中的时候则会发生错误,样例代码如下:

//父类的定义package com.test.Demo;public class Person{    String name;        public Person(String name){        this.name = name;    }        public String getName(){        return this.name;    }}import com.test.Demo.Person;class Test{    public static void main(String[] args){        Person p = new Person("Daming");                System.out.println(p.name);    }}

当调用的类与对象的类不在一个包中的时候,则发生如下的错误:

1017814-20190608141138859-96344934.png

protected

protecte实验的代码如下:(参见其他人写的代码,觉得对自己理解protected有帮助)

package com.lky.h1;public class Base{    private Integer id;    protected String name;            public Integer getId(){        return id;    }        public void setId(Integer id){        this.id = id;    }        public String getName(){        return name;    }        public void setName(String name){        this.name = name;    }        public String toString(){        return "Base [id=" + id + ", name=" + name + "]";     }}
//在同一个包中的子类package com.lky.h1;class Test1 extends Base{    public static void main(String[] args){        Test1 test1 = new Test1();        Base base = new Base();                base.name = "Daming";        test1.name = "hong";                System.out.println(base.name);        System.out.println(test1.name);    }}

运行结果如下:

1017814-20190608150937821-1709666319.png

此时说明在同一个包中的时候,无论是父类还是子类都可以调用定义用protected修饰的变量。

下面则是在不同包中定义的子类

package com.lky.h2;import com.lky.h1.Base;class Test2 extends Base{    public static void main(String[] args){        Test2 test2 = new Test2();        Base base = new Base();                base.name = "Daming";        test2.name = "hong";                System.out.println(base.name);        System.out.println(test2.name);    }}

运行的结果如下:

1017814-20190608152045175-1464661638.png

通过上图可以说明在同一个包中,父类定义一个以protected修饰的变量的时候,子类和父类的实例都是可以访问的。

但是在不同的包中的时候,父类中定义一个以protected修饰的变量的时候,子类可以通过的实例来直接访问,父类不可以通过的实例来直接访问。

转载于:https://www.cnblogs.com/gxcstyle/p/10990455.html

你可能感兴趣的文章
python全栈 计算机硬件管理 —— 硬件
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
YUI3自动加载树实现
查看>>
kettle导数到user_用于left join_20160928
查看>>
较快的maven的settings.xml文件
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
malloc() & free()
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
关于这次软件以及pda终端的培训
查看>>