`
hellojim
  • 浏览: 53313 次
  • 性别: 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中实现不同级别的访问权限,以便于理解和学习。 1. 访问修饰符: Java提供了四种主要的访问修饰符:public、private、...

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

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

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

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

    Java类protected继承链访问控制机制研究.pdf

    本文主要探讨了Java中的`protected`继承链访问控制机制,这是Java封装特性的一个重要组成部分。下面将详细介绍这个机制以及相关的封装结构。 在C++中,类的访问修饰符主要有`private`(私有)、`protected`(保护)...

    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`,这些控制符决定了...

    java统计高并发首页访问量,记录客户登录信息

    在Java开发中,统计高并发环境下首页访问量并记录客户登录信息是一项常见的需求,这涉及到系统性能优化、数据持久化以及并发控制等多个方面。在这个项目中,开发框架选择了Spring,这是一个广泛使用的Java企业级应用...

    java访问https网址下载文件

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

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

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

Global site tag (gtag.js) - Google Analytics