权限修饰符概述:
作用域 |
当前类 |
同一package |
子孙类 |
其他package |
public |
√ |
√ |
√ |
√ |
protected |
√ |
√ |
√ |
× |
friendly |
√ |
√ |
× |
× |
private |
√ |
× |
× |
× |
java访问权限修饰符(特殊情况除外)
不写时默认为friendly
首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。为了条理清晰,分三种不同情况来总结。
1. 访问权限修饰符修饰成员变量和方法
1) public:表明该成员变量和方法是共有的,能在任何情况下被访问。
2) protected:必须在同一包中才能被访问。
3) friendly:在一个包中或者子类中才能被访问。
4) private: 只能在本类中访问。
实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
2. 访问权限修饰符修饰类
1) 不能用protected和private修饰类。
2) 用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。
3. 访问权限修饰符与继承
这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
1) 子类与父类在同一包中
此时只有声明为private的变量与方法不能被继承(访问)。
2) 子类与父类不在同一包中
此时private与friendly均不能被继承(访问), protected与public可以。所以,访问权限修饰符权限从高到低排列是public, protected, friendly, private。
结合代码分析权限修饰符:
首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。
为了条理清晰,分三种不同情况来总结。
一 访问权限修饰符修饰成员变量和方法
public:表明该成员变量和方法是共有的,能在任何情况下被访问。
protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)
Java代码
class A
{
protected int weight ;
protected int f( int a,int b )
{
// 方法体
}
}
假设B与A在同一个包中,则
Java代码
class B
{
void g()
{
A a=new A();
A.weight=100;//合法
A.f(3,4); //合法
}
}
特别说明:什么是在同一个包中?
答:用package打包在一起的class ,叫在同一个包中。(不明白,举个例子)
eg:在JDK的src\java\io中,你会看到许多java类,第一句源代码都是package java.io;
没有使用package打包的,在同一目录下的类也会被视做同一个包。
friendly:在这种情况下中,同protected。区别在第二和第三种情况中。
Java代码
class A
{
int weight ;
int f( int a,int b )
{
// 方法体
}
}
假设B与A在同一个包中,则
Java代码
class B
{
void g()
{
A a=new A();
A.weight=100;//合法
A.f(3,4); //合法
}
}
private: 只能在本类中访问。
Java代码
class Test
{
private int money;
Test()
{
money=2000;
}
private int getMoney()
{
return money;
}
public static void main(String args[])
{
Test te=new Test();
te.money=3000; //合法
int m=te.getMoney(); //合法
System.out.println("money="+m);
}
}
PS: 实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
二 访问权限修饰符修饰类
1,不能用protected和private修饰类。
2,用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。
三 访问权限修饰符与继承
这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
1,子类与父类在同一包中
此时只有声明为private的变量与方法不能被继承(访问)。
Java代码
class Father
{
private int money ;
int weight=100;
}
class Son extends Father
{
viod f()
{
money=10000;// 非法
weight=100; // 合法
}
}
2,子类与父类不在同一包中
此时private与friendly均不能被继承(访问), protected与public可以。
Father.java
Java代码
package com.aaa
public class Father
{
int height ;
protected int money=120;
public int weight;
protected int getMoney()
{
return money;
}
void setMoney(int newMoney)
{
money=newMoney;
}
}
Son.java
Java代码
package com.bbb
import com.aaa.Father;
public class Son extends Father
{
void f()
{
money=10000;//合法
//height=170;//非法,height为friendly修饰的变量
System.out.println(money);//输出结果是10000
//setMoney(300); //非法
int number=getMoney(); //合法
System.out.println(number);//输出结果是10000
}
public static void main(String args[])
{
Son sss=new Son();
sss.f();
}
}
所以,访问权限修饰符权限从高到低排列是public ,protected ,friendly, private。
分享到:
相关推荐
访问权限修饰符分为四种:public、protected、friendly 和 private。每种修饰符都有其特定的访问权限和使用场景。 一、public 访问权限修饰符 public 访问权限修饰符表明该成员变量和方法是共有的,能在任何情况下...
根据 JAVA 访问修饰符的特性和使用范围,我们可以将其分为三类:修饰符类的访问修饰符、属性的访问修饰符和方法的修饰符。 一、修饰符类的访问修饰符 修饰符类的访问修飾符共有四种:默认、public、abstract 和...
Java 中的访问修饰符可以分为三大类:类的访问修饰符、属性的访问修饰符和方法的访问修饰符。每种修饰符都有其特定的访问权限和用途。 类的访问修饰符 Java 中有四种类的访问修饰符: 1. 缺省(friendly):同一...
本文将深入探讨Java的访问控制修饰符,包括`private`、`default`(也称为`friendly`)、`protected`和`public`,以及它们如何影响程序的结构和安全性。 #### 访问控制修饰符:封装的基石 访问控制修饰符是Java语言...
Java提供了五种访问权限级别,分别是public、friendly(或称为default)、private和protected。下面将详细解释这些访问权限的含义和使用场景。 1. **public**: - 成员(方法、变量):任何类在任何地方都能访问。...
本文主要分析了Java中常见的访问修饰符(public、private、protected、friendly/default)以及非访问修饰符(final、abstract、static、native)。我们将通过具体的例子和解析深入理解这些修饰符的作用。 首先,...
Java修饰符在编程中起着至关重要的作用,它们用于控制类、接口、变量和方法的访问权限以及实现其他特性。本文将深入探讨Java中的访问修饰符及其应用。 首先,我们来了解一下类的访问修饰符: 1. **public**:公共...
说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × ×
在Java编程语言中,访问控制修饰符是用来定义类、接口、方法和变量的可见性和访问权限的。主要有四种访问控制修饰符:`private`、`protected`、`public`和`default`,它们决定了代码的封装性和可访问性。下面我们将...
总结起来,Java中的类定义、成员变量、方法、构造器、重载、访问控制以及包的使用都是面向对象编程的关键组成部分。理解并熟练掌握这些概念,对于编写健壮、安全的Java代码至关重要。在实际编程中,我们会根据需求...
* 类成员的访问控制符有 public,private,protected 及无修饰符。 * public(公有的):用 public 修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限)。 * Private...
- **access modifier**: 访问修饰符,如public, private等。 - **return type**: 方法返回值的类型,如果是无返回值,则用`void`表示。 - **methodName**: 方法名称。 - **parameters**: 方法的参数列表。 #### ...
- `private`: 私有访问修饰符,只能在定义该成员的同一类内部访问。 - `protected`: 受保护的访问修饰符,可以在同一包内的任何类,以及不同包中的子类中访问。 - 缺省(friendly):默认的访问级别,仅在定义类...
Java 中有四种访问修饰符:public、private、protected 和 friendly(默认)。每种访问修饰符都有其特定的访问权限范围。了解访问修饰符的作用域是 Java 开发中的基本知识。 2. ArrayList 和 Vector 的区别 ...
类成员的访问控制符有 public,private,protected 及无修饰符。public(公有的):用 public 修饰的成员表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限)。Private(保护的):类中...
1. 修饰符:如public、private、protected等,用于控制类的访问权限。 2. 类名:遵循驼峰命名法,表示类的标识。 3. 成员变量:类中定义的变量,可以是数据类型的实例,也可以是静态(static)变量。 4. 成员方法:...
共有四种访问修饰符:`public`、`protected`、`default`(未指定访问修饰符时,默认访问级别)和`private`。 - **public**: 具有最大的访问权限,可以在任何地方被访问。它常常被用作类的公共接口,使得其他类能够...
访问修饰符的作用域包括 public、private、protected 和 friendly 四种。public 表示可以被所有类访问,private 表示只能被当前类访问,protected 表示可以被当前类和子类访问,friendly 表示可以被当前类和同一个包...
通过合理运用`public`、`private`、`protected`以及默认访问控制符,开发者能够构建出既灵活又安全的软件系统。这些访问控制符不仅帮助实现了封装原则,也提高了系统的可维护性和扩展性。 #### 六、参考资料 - ...