首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。
为了条理清晰,分三种不同情况来总结。
一 访问权限修饰符修饰成员变量和方法
public :表明该成员变量和方法是共有的,能在任何情况下被访问。
protected :必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)
eg:class A
{
protected int weight ;
protected int f( int a,int b )
{
// 方法体
}
}
假设B与A在同一个包中,则
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。区别在第二和第三种情况中。
eg: class A
{
int weight ;
int f( int a,int b )
{
// 方法体
}
}
假设B与A在同一个包中,则
class B
{
void g()
{
A a=new A();
A.weight=100;//合法
A.f(3,4); //合法
}
}
private: 只能在本类中访问。
eg: 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的变量与方法不能被继承(访问)。
eg:
class Father
{
private int money ;
int weight=100;
}
class Son extends Father
{
viod f()
{
money=10000;// 非法
weight=100; // 合法
}
}
2,子类与父类不在同一包中
此时private与friendly均不能被继承(访问), protected与public可以。
eg:
Father.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
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提供了五种访问权限级别,分别是public、friendly(或称为default)、private和protected。下面将详细解释这些访问权限的含义和使用场景。 1. **public**: - 成员(方法、变量):任何类在任何地方都能访问。...
Java 中的访问修饰符可以分为三大类:类的访问修饰符、属性的访问修饰符和方法的访问修饰符。每种修饰符都有其特定的访问权限和用途。 类的访问修饰符 Java 中有四种类的访问修饰符: 1. 缺省(friendly):同一...
本文将深入探讨Java的访问控制修饰符,包括`private`、`default`(也称为`friendly`)、`protected`和`public`,以及它们如何影响程序的结构和安全性。 #### 访问控制修饰符:封装的基石 访问控制修饰符是Java语言...
本文主要分析了Java中常见的访问修饰符(public、private、protected、friendly/default)以及非访问修饰符(final、abstract、static、native)。我们将通过具体的例子和解析深入理解这些修饰符的作用。 首先,...
Java 成员变量和方法的 public 等访问限定符的访问权限 在 Java 编程中,访问限定符是控制类、成员变量和方法的访问权限的关键。了解访问限定符的作用域是 Java 基础知识之一,对于编程人员来说是必备的知识。本文...
Java修饰符在编程中起着至关重要的作用,它们用于控制类、接口、变量和方法的访问权限以及实现其他特性。本文将深入探讨Java中的访问修饰符及其应用。 首先,我们来了解一下类的访问修饰符: 1. **public**:公共...
说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × ×
在Java编程语言中,访问控制修饰符是用来定义类、接口、方法和变量的可见性和访问权限的。主要有四种访问控制修饰符:`private`、`protected`、`public`和`default`,它们决定了代码的封装性和可访问性。下面我们将...
* 类成员的访问控制符有 public,private,protected 及无修饰符。 * public(公有的):用 public 修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限)。 * Private...
总结起来,Java中的类定义、成员变量、方法、构造器、重载、访问控制以及包的使用都是面向对象编程的关键组成部分。理解并熟练掌握这些概念,对于编写健壮、安全的Java代码至关重要。在实际编程中,我们会根据需求...
通过合理运用`public`、`private`、`protected`以及默认访问控制符,开发者能够构建出既灵活又安全的软件系统。这些访问控制符不仅帮助实现了封装原则,也提高了系统的可维护性和扩展性。 #### 六、参考资料 - ...
Java 中有四种访问修饰符:public、private、protected 和 friendly(默认)。每种访问修饰符都有其特定的访问权限范围。了解访问修饰符的作用域是 Java 开发中的基本知识。 2. ArrayList 和 Vector 的区别 ...
类成员的访问控制符有 public,private,protected 及无修饰符。public(公有的):用 public 修饰的成员表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限)。Private(保护的):类中...
5. 访问权限修饰符:从控制范围最大到最小排序依次是public、protected、friendly(包内访问,Java中通常用包访问权限代替)和private。因此,正确顺序是B:public>protected>friendly>private。 6. 异常处理:try-...
- 缺省(无修饰符): 也称为package-private或者friendly,表示只能在同一包内的其他类访问。 - `class`: 关键字,用于声明类。 - `classname`: 类名,用于标识该类。 - `extends superclassname`: 表示继承父类,...
Java提供了四种访问修饰符:public、private、protected和默认(friendly)。public成员对所有类都是可见的,private成员只能在定义它的类中访问,protected成员可以在本类和其子类中访问,而默认修饰符(包访问权限...
Java访问修饰符:public, private, protected与默认(包访问) 在Java中,访问控制是通过`public`, `private`, `protected`以及默认访问权限(也称为包访问权限)来实现的。这些关键字决定了类、方法或变量在不同...