`
hellojim
  • 浏览: 53346 次
  • 性别: 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中的访问权限控制,并结合提供的源代码进行分析。 1. 访问修饰符概述: Java提供了四种主要的访问修饰符:`public`、`protected`、`default`(无修饰符)和`private`。这些修饰符决定了成员...

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

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

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

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

    JAVA中license控制实现示例.doc

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

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

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

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

    这个"基于Java的源码-访问权限控制源代码.zip"文件很可能包含了一些示例,用于演示Java中的访问修饰符如何工作以及如何实现有效的访问控制。让我们深入探讨一下Java中的访问权限控制。 1. 访问修饰符: - **public...

    Java入门笔记4_访问控制和包

    ### Java中的访问控制详解 Java作为一种强类型编程语言,提供了丰富的访问控制机制,以确保代码的安全性和封装性。访问控制在Java中主要通过四种访问修饰符实现:`public`、`protected`、`default`(通常称为包访问...

    java实现流量控制流量控制

    在Java中,我们可以利用Socket类和相关的API来实现TCP连接,并通过设置缓冲区大小来间接控制流量。 1. **Socket类和BufferedInputStream/BufferedOutputStream** Java的Socket类提供了与服务器建立TCP连接的功能。...

    java访问权限修饰符public.doc

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

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

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

    Java实现远程控制技术(附完整源代码)

    Java中的Socket编程和多线程技术是实现远程控制的关键。 1. **Java Socket编程**:Java的Socket类和ServerSocket类用于实现客户端和服务器之间的通信。客户端通过Socket连接到服务器的特定端口,建立TCP连接,从而...

    剖析Java中的访问/非访问控制符以及神奇的main函数

    Java中的访问控制符是编程中用来限制类、接口、字段和方法访问权限的关键字,它们在面向对象的设计中起着至关重要的作用。访问控制符主要包括`private`、默认(无修饰符)、`protected`和`public`,这些控制符决定了...

    windows下java访问hid设备

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

    java访问https网址下载文件

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

    基于Java的实例源码-访问权限控制源代码.zip

    这个"基于Java的实例源码-访问权限控制源代码.zip"文件很可能包含了一些示例,展示了如何在Java中使用不同的访问修饰符来管理类、方法和变量的可见性。以下是对Java访问权限控制的详细解释。 1. **访问修饰符**: ...

    java控制热敏打印机的例子

    总之,通过Java结合RXTX库和ESC/POS指令,我们可以实现对爱普生热敏打印机的控制,从而在各种应用场景中实现灵活的打印需求。这个过程涉及串行通信、数据编码和打印机硬件交互等多个IT领域的知识。

    JAVA 统计网站的访问量PV,UV

    在IT行业中,统计网站的访问量是衡量一个网站活跃度和受欢迎程度的重要指标。这里我们主要探讨如何使用Java,Spring框架以及MySQL数据库来实现对网站的PV(页面浏览量)和UV(独立访客数)的统计。首先,我们需要...

Global site tag (gtag.js) - Google Analytics