`
hellojim
  • 浏览: 53630 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

话说JAVA中成员访问控制

    博客分类:
  • JAVA
阅读更多

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中的访问控制是确保代码质量、安全性和可维护性的重要手段。通过理解并熟练应用这些访问控制修饰符,开发者能够更好地设计和实现复杂的软件系统。在编程实践中,我们应该根据需求选择合适的访问控制,以...

    实验7 成员访问控制与异常.doc

    本次实验的主要目的是帮助初学者理解和掌握Java中的成员访问控制以及异常处理机制。实验内容包括理解Java包的组织结构、编写带有包结构的程序、掌握包结构下的成员访问控制、以及异常处理的相关知识。 #### 二、...

    Java访问权限控制源代码

    本主题将深入探讨Java中的访问修饰符及其在源代码中的应用。 首先,Java提供了四种基本的访问权限控制修饰符: 1. **public**:公共访问修饰符,允许任何地方的任何类访问。如果一个类、接口或方法被声明为public...

    6.java访问控制.zip

    6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6.java访问控制.zip6....

    浅析Java中的访问权限控制Java开发Java经验技巧共

    本文将深入探讨Java中的访问权限控制,以及其在实际开发中的应用和重要性。 首先,Java提供了四种不同的访问级别,分别是:public、protected、默认(包级私有)和private。这些访问修饰符用于定义类、接口、方法和...

    Java语言与面向对象程序设计第09讲(访问控制符和类的设计)

    首先,我们要理解Java中的四种访问控制符: 1. **private**:这是最严格的访问级别,被private修饰的成员只能在定义它们的类内部被访问,不能被类的外部或者子类访问。通常,我们用private来保护类的实例变量,确保...

    Java访问权限控制源代码.zip

    这个"Java访问权限控制源代码.zip"压缩包可能包含了示例代码,用于演示Java中的不同访问修饰符如何工作以及如何实施访问控制。现在,我们将深入探讨Java中的访问权限控制机制。 首先,Java提供了四种访问级别: 1....

    基于java的访问权限控制源代码.zip

    这个压缩包“基于java的访问权限控制源代码.zip”很可能包含了一系列示例,用于演示如何在Java中实现不同级别的访问控制,以便管理类、方法和变量的可见性和可访问性。 在Java中,访问修饰符主要有四种:`public`、...

    JAVA中license控制实现示例.doc

    JAVA中license控制实现示例 在 Java 中,license 控制是指通过生成和验证数字签名来控制软件的使用权限。这种方法广泛应用于 J2EE 应用中,特别是在系统购买的早期,提供有限制的 license 文件对系统进行限制。 在...

    JAVA源码Java访问权限控制源代码JAVA源码Java访问权限控制源代码

    JAVA源码Java访问权限控制源代码JAVA源码Java访问权限控制源代码

    Java类成员访问权限控制知识总结

    权限修饰词是Java中用于控制类成员访问权限的关键字。有四种权限修饰词:public、default、protected和private。每种权限修饰词都有其特点和使用场景。 1. public:public权限修饰词表示公有的意思,任何成员都可以...

    java实现读取证书访问https接口

    本篇文章将深入探讨如何在Java中实现读取不同格式(如cer、der、crt)的证书,以及如何使用这些证书访问HTTPS接口并获取返回数据。 首先,我们需要了解证书的基本概念。证书通常包含了公钥和一些身份信息,由受信任...

    java访问权限修饰符public.doc

    在 Java 语言中,访问权限修饰符是指用来限定类、成员变量和方法的可访问范围的关键字。访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问权限和使用场景。 一、public...

    Java访问权限控制源代码.rar

    本资源"Java访问权限控制源代码.rar"可能包含了一系列示例,用于展示如何在Java中应用不同的访问修饰符,以及它们如何影响类、方法和变量的可见性。现在,我们将深入探讨Java的访问权限控制。 1. 访问修饰符概述: ...

    浅析Java中的访问控制权限

    Java中的访问控制权限是编程实践中一个至关重要的概念,它确保了代码的封装性和安全性。Java提供了四种访问控制权限,每种都有其特定的作用和应用场景。 首先,我们来看默认的访问权限,也称为包访问权限。当一个类...

    Java实现的远程控制

    Java 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 Socket

    windows下java访问hid设备

    本文将深入探讨如何在Java中与USB HID设备进行通信,以及在实际项目中应用的方法。 首先,我们需要理解HID设备是什么。HID设备是USB设备的一种,主要用于人机交互,如键盘、鼠标、游戏控制器等。它们遵循特定的USB ...

    JAVA_API1.6文档(中文)

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    java访问https网址下载文件

    本篇将详细介绍如何在Java中实现这一功能,特别是在遇到需要下载证书的情况。 首先,你需要引入Java的HTTPS相关的库,这通常包含在`javax.net.ssl`包中。Java的`HttpURLConnection`类是处理HTTP和HTTPS请求的基础,...

Global site tag (gtag.js) - Google Analytics