JAVA中成员访问控制有四种类型,从不开放 到 开放,分别为 private,default(在成员前或类前不加任何访问控制即为default),protected,public。在一个类的前面只能有两种访问控制类型即default(在类前不加任何访问控制即为default)和public ,同一个包中的类互相访问只要有default这样的访问权限就够了,如果不在同一个包中的类互相访问类前必须要有public这样的访问权限。看下面的代码:
package com.jim;
public class Person {
String name ;
int age;
public Person() {
}
public Person(String name) {
this.name = name;
}
public Person(String name,int age) {
this(name);
this.age = age;
}
//default型:如果成员前没有加任何型,就表示default型或朋友型或包型,表示此成员只能被同一个包中的类的成员访问
void shutName() {
System.out.println("name = " + name);
shutAge();
}
//private型:表示只能被同一个类中的其它成员访问,其它的都不能访问
private void shutAge() {
System.out.println("age = " + age);
}
}
class Dog {
public static void main(String[] args) {
new Person("zhangsan",10).shutName();
}
}
之所以 new Person("zhangsan",10).shutName(); 这样的一句能正常运行,是因为 Person 和 Dog 这两个类在同一个包中(com.jim这个包),所以 public class Person 这里的 public 加不加都无所谓(加在这里是因为下面的Student类和它不在同一个包中,而 Student 类又要extends Person这个类),都不会出错. 这里的 Person 类中的 shutName 方法的访问控制类型就是 default 的(因为在一个类中,可以访问其它同一个包中其它类的 default 型的方法),所以在 Dog类中访问 shutName() 这样的方法不会报错。
再看一个类:这个类在 com.jim.example 这个包中,它和上面的 Person 类不在同一个包中,但它是 Person 类的子类,所以这个类它是 extends 不到 Person 类的 name 、age 成员属性和shutName()成员方法的,因为它们不在同一个包中,所以下面这段代码运行会报错。如果要想达到extends效果,就必须把 Person 类的name 、age 成员属性和shutName()成员方法的访问控制至少变为 protected 的或public 的。
/*
如果父类与子类不在同一个包中,子类想 extends 父类的成员(成员属性和成员方法),
父类的成员访问控制类型必须是 protected 以上,也就是说成员
访问控制类型必须为 protected 或 public 的
*/
package com.jim.example;
class Student extends com.jim.Person {
private String school;
public Student() {
}
public Student(String name,int age,String school) {
super(name,age);
this.school = school;
}
public void shutSchool() {
System.out.println("name = " + name + " age = " + age + " school = " + school);
}
public static void main(String[] args) {
Student student1 = new Student("wangji",26,"上海大学");
student1.shutSchool();
student1.shutName();
}
}
public 就不用多说了吧!如果两个类既不在同一个包中,又没有父子关系,那么在一个类中要访问另外一个类,那么另外的这个类的成员的访问控制就必须为 public 的,其它的访问控制类型都不行。
分享到:
相关推荐
简要叙述什么是访问控制符,列出Java中的访问控制符,并说明各个访问控制符的控制权限
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...
6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6....
本文档介绍了Java中的访问控制权限修饰符。它解释了public、private、protected和默认访问级别的含义和用法,以及它们在类、接口、成员变量和方法中的应用。 能学到什么 通过阅读本文档,您将学习以下内容: 不同...
Java访问权限控制源代码
java100例之实例8访问控制(java实例系列)
很清楚的分析与讲解Java的访问权限的控制
java实现流量控制java实现流量控制java实现流量控制java实现流量控制java实现流量控制
用java模拟访问浏览网站的代码,可以输出各种网页属性,以及html源代码
java 使用URL访问网页 java 使用URL访问网页 java 使用URL访问网页
文章目录前言特性中的继承访问控制符成员访问控制符private默认protectedpublic类的访问控制符非访问控制符static静态域静态方法finalfinal类final方法final字段和局部变量main()方法 你好,我是goldsun。 你有想法...
java的控制符可分为两大类,一种是访问控制符,另一种是非访问控制符。我们上文提到的public,private便是访问控制符了。 访问控制符:访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限 ...
主要介绍了浅析Java中的访问控制权限,在Java中,提供了四种访问权限控制,分别是默认访问权限、public、private以及protected,感兴趣的小伙伴们可以参考一下
java实现读取证书访问https接口并获取返回数据.证书格式cer,der,crt等。
Java反射机制,万物皆对象,class也是一个类的对象,通过类类型,反射获得类的成员属性,构造方法,成员方法,并调用类中的方法,也可以调用私有方法。
JAVA中license控制实现示例 生成密钥对 私钥签名 公钥验证 很不错的资料
从Java嵌套类中访问外部类成员.doc
java类、对象、成员 package、import、访问修饰控制符 接口和抽象类 细心总结,解惑上述所引起的一些困惑
主要介绍了Java类成员访问权限控制知识总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在Java学习过程中,在写类经常为用到public,private和protected,我个人的经验是一般类的成员变量都是用private,方法用public,类的内部用protected方法,如果是存在子类的,那我就会把父类中的成员变量变为...