当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 >
Java中的权限修饰符
时间:2018-12-24作者:华清远见

java面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节。访问控制分为四种级别:

(1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问;

(2)protected: 用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承了该类的子类才能访问(包外的子类可以用Super来访问),protected重点突出继承;

(3)default: 如果一个类、类属变量及方法没有用任何修饰符(即没有用public、protected及private中任何一种修饰),则其访问权限为default(默认访问权限)。默认访问权限的类、类属变量及方法,包内的任何类(包括继承了此类的子类)都可以访问它,而对于包外的任何类都不能访问它(包括包外继承了此类的子类)。default重点突出包;

(4)private: 用private修饰的类、类属变量及方法,只有本类可以访问,而包内包外的任何类均不能访问它。

(1)适用范围<访问权限范围越小,安全性越高>,如图所示:

Java中的权限修饰符,JAVA培训

(2)类的修饰符:public:主类。 一个文件中只能有一个主类。 主类整个项目下都可以使用。

default:其他类。不能跨包使用。

  成员(变量和方法 ,本包可以使用。成员变量成员方法):public  protected  default  private

      public:在整个项目下都可以使用。

      default:在本包内可以使用,不能跨包。

      private:只有本类可以使用。其他类都不能使用。

      protected:不能跨包,但是跨包类如果是该类的子类,就可以用。用super来访问父类的成员

构造方法:

public  protected  default  private和成员的使用是一样的,没有任何区别。

例:

package com.fs.test;

import com.fs.TestAccess02;

/*为什么protected修饰的成员变量hight 可以在B类使用  A类就不行、

 * 

 * 因为protected修饰的关键字,虽然不能跨包使用。但是可以在子类中使用。

 * 

 * */

public class A {

public static void main(String[] args) {

//Test1是public修饰的类,是可以跨包使用的。

TestAccess02 t =new TestAccess02();

//default修饰的类,在其他包中不能使用。

// T t2 =new T();

//public修饰的成员变量age  是可以跨包使用的。

System.out.println(t.age);

//default修饰的成员变量name。 不可以跨包使用

// System.out.println(t.name);

//protected修饰的成员变量hight  不能跨包使用。

// System.out.println(t.hight);

}

}

class B extends TestAccess02{

public void method(){

//protected修饰的成员变量hight  可以在不同包子类中使用。

System.out.println(super.hight);

}

}

TestAccess02位于:package com.fs

A位于:package  com.fs.test

B 位于:package  com.fs.test,但是却是TestAccess02的子类

结论:protected修饰符所修饰的类(这句话中指父类)属成员变量和方法,只可以被子类访问,而不管子类是不是和父类位于同一个包中。default修饰符所修饰的类属成员变量和方法,只可被同一个包中的其他类访问,而不管其他类是不是该类的子类。protected属于子类限制修饰符,而default属于包限制修饰符。


发表评论

全国咨询电话:400-611-6270,双休日及节假日请致电值班手机:15010390966

在线咨询: 曹老师QQ(3337544669), 徐老师QQ(1462495461), 刘老师 QQ(3108687497)

企业培训洽谈专线:010-82600901,院校合作洽谈专线:010-82600350,在线咨询:QQ(248856300)

Copyright 2004-2018 华清远见教育集团 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号