Java类中属性的权限级别有哪些?

您所在的位置:网站首页 医师的等级由低到高分别是 Java类中属性的权限级别有哪些?

Java类中属性的权限级别有哪些?

2024-02-02 21:04| 来源: 网络整理| 查看: 265

Java中一个类的属性可以分为四个权限级别,分别为:private(私有级)、protected(受保护级)、无前缀(默认级)、public(公共级)。 可能你会以为protected(受保护级)是权限等级最高的级别,但是实际上private(私有级)的权限级别是最高的。 大致的权限高低如下(由高到低):

private>无前缀>protected>public

具体的权限是这样的:

同包中的子类同包中的非子类非同包中的子类非同包中的非子类private✔\\\protected✔✔✔\默认的✔✔\\public✔✔✔✔ 接下来让我们看一看具体是什么情况

首先建立一个父类(代码如下):

package znoop.znoop10.text; public class Person { //public 公共级 public String name; //默认级 int age; //protected 受保护级 protected long phonenumber; //private 私有级 private String address; public Person(){ this.name="红桃杰克"; this.age=20; this.phonenumber=01420152342; this.address="浙江省"; } public Person(String name,int age,long phonenumber,String address){ this.name=name; this.age=age; this.phonenumber=phonenumber; this.address=address; } public void say(){ System.out.println("姓名:"+this.name); System.out.println("年龄:"+this.age); System.out.println("手机号:"+this.phonenumber); System.out.println("地址:"+this.address); } }

然后建立一共同包中的子类(代码如下):

package znoop.znoop10.text; //Person类同包中的子类 public class Student extends Person{ public int grade; public Student() { super(); } public Student(int grade) { super(); this.grade = grade; this.name="张三"; this.age=18; this.phonenumber=123; this.address="泽园五号楼"; } }

输入第二个代码我们可以看到有格式错误,这说明同包中的子类并不能继承父类的private级别的属性。 那么怎么才能跨越权限级别输出和修改父类中的属性呢? 这里我们以private为例,我们可以在父类中分别建立public级别的set和get(在一种添加如下代码):

public String getAddress(){ return this.address; } public void setAddress(String address){ this.address=address; }

这样就可以在其他类中通过调用public级别的set和get来对父类中private级别的属性进行输出和修改。

在同包中创建一个非子类:

package znoop.znoop10.text; public class InDemo { public static void main(String[] args){ Person p1=new Person(); System.out.println(p1.name); System.out.println(p1.age); System.out.println(p1.phonenumber); //System.out.println(p1.address); System.out.println(p1.getAddress()); } }

通过这串代码我们可以明显看到它和同包中的子类一样无法直接调动Person类中private级别的属性address,但是可以通过public级别的get方法输出属性address。 下面是非同包中的子类:

package znoop.znoop10; import znoop.znoop10.text.Person; public class Teacher extends Person{ public String office; public Teacher(String office) { super(); this.office = office; this.name="时崎狂三"; this.age=18; this.phonenumber=2346; this.address="加息留"; this.setAddress("加息留"); } }

输入这串代码后会发现非同胞中的子类无法调用Person类中默认级和private级的属性。 最后让我们建立一个非同胞中的非子类:

package znoop.znoop10; import znoop.znoop10.text.Person; public class OutDemo { public static void main(String[] agrs){ Person p2=new Person(); System.out.println(p2.name); System.out.println(p2.age); System.out.println(p2.phonenumber); System.out.println(p2.getAddress()); } }

我们发现在非同包中的非子类里面我们只能调用Person类中公共级别的属性。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3