首页 > 编程语言 >Java访问修饰符

Java访问修饰符

时间:2023-02-05 15:33:46浏览次数:40  
标签:Java void 修饰符 访问 msg java public

java中有两种类型的修饰符:访问修饰符和非修饰符。
java中的访问修饰符指定数据成员,方法,构造函数或类的辅助功能(范围)。
一共有4种类型的java访问修饰符:

  • private
  • default
  • protected
  • public

有许多非访问修饰符,如:static, abstract, synchronized, native, volatile, transient等修饰符。这里,我们将只学习访问修饰符。

private访问修饰符

私有(private)访问修饰符只能在类中访问。

private访问修饰符的简单示例

在这个例子中,我们创建了两个类:ASimple。 类包含私有数据成员和私有方法。 我们从类外访问这些私有成员,所以会产生编译时错误。

class A {
    private int data = 40;

    private void msg() {
        System.out.println("Hello java");
    }
}

public class Simple {
    public static void main(String args[]) {
        A obj = new A();
        System.out.println(obj.data);// 私有变量,不可以从外部类中直接访问,因此有编译错误
        obj.msg();// 私有方法,不可以从外部类中直接访问,因此有编译错误
    }
}
Java

1. private访问修饰符

如果将类的构造函数声明为私有,则不能从类外部创建该类的实例。 例如:

class A {
    private A() {
    }// private constructor

    void msg() {
        System.out.println("Hello java");
    }
}

public class Simple {
    public static void main(String args[]) {
        A obj = new A();// Compile Time Error
    }
}
Java

注意:类不能是私有或保护,除非是嵌套类。

2. default访问修饰符

如果不使用任何修饰符,默认情况下将其视为default修饰符。default修饰符只能在包内访问。

default访问修饰符示例

在这个例子中,我们创建了两个包packmypack。从它的包外部访问A类,因为一个类不是public的,所以它不能从包外部访问。如下两个类:A.javaB.java 代码。

//save by A.java  
package pack;  
class A{  
    void msg(){System.out.println("Hello");}  
}
Java

B.java 代码的代码如下 -

//save by B.java  
package mypack;

import pack.*;

class B {
    public static void main(String args[]) {
        A obj = new A();// Compile Time Error
        obj.msg();// Compile Time Error
    }
}
Java

在上面的例子中,A类的范围和它的方法msg()是默认(default)的,所以它不能从包外部访问。

3. protected访问修饰符

protected访问修饰符可以在包中和包外部访问,但只能通过继承。protected访问修饰符可以应用于数据成员,方法和构造函数。 它不能应用于类。

protected访问修饰符的示例

在这个例子中,我们创建了两个包packmypackA类的包是public的,所以可以从外部访问包。 但是这个包的msg方法声明为protected,因此只能通过继承从类外面访问它。如下两个类:A.javaB.java 代码。

//save by A.java  
package pack;

public class A {
    protected void msg() {
        System.out.println("Hello");
    }
}
Java

B.java 代码如下 -

//save by B.java  
package mypack;

import pack.*;

class B extends A {
    public static void main(String args[]) {
        B obj = new B();
        obj.msg();
    }
}
Java

执行上面代码,得到如下结果 -

Hello
Java

4. public访问修饰符

公共(public)访问修饰符可随处访问。 它在所有其他修饰符中具有最广泛的范围。

public访问修饰符示例

如下两个类:A.javaB.java 代码。

A.java 的代码

//save by A.java  

package pack;

public class A {
    public void msg() {
        System.out.println("Hello");
    }
}
Java

B.java 的代码

//save by B.java  

package mypack;

import pack.*;

class B {
    public static void main(String args[]) {
        A obj = new A();
        obj.msg();
    }
}
Java

执行上面的代码,得到以下结果 -

Hello
Java

理解所有java访问修饰符

让我们通过下面的一个简单的表来理解访问修饰符。

访问修饰符在类内在包内外部包只通过子类外部包
Private Y N N N
Default Y Y N N
Protected Y Y Y N
Public Y Y Y Y

如果你要覆盖任何方法,重写的方法(即在子类中声明)则不能声明得更严格。

class A {
    protected void msg() {
        System.out.println("Hello java");
    }
}

public class Simple extends A {
    void msg() {
        System.out.println("Hello java");
    }// C.T.Error

    public static void main(String args[]) {
        Simple obj = new Simple();
        obj.msg();
    }
}
Java

默认(default)修饰符比受保护的修饰符更严格。 这就是为什么有编译时错误。

 

标签:Java,void,修饰符,访问,msg,java,public
From: https://www.cnblogs.com/cnetsa/p/17093435.html

相关文章

  • java开发mis系统
    如何使用Java开发一个小型的信息管理系统,首先我们应该知道要使用什么样的方法。1.Java基础2.JSP+Servlet+JavaBeanJSP是服务器端的编程语言,见得比较多的是在一些网站上(......
  • 2023JAVA面试重点
    JAVA基础==和equals比较有什么区别?基本数据类型4种整数类型:int、long、byte、short2种浮点数类型:float、double1种字符类型:char1种布尔类型:boole......
  • java运算符和Scanner和进制运算
    1. 赋值运算符(1)基本介绍基本赋值运算符=inta=10;复合赋值运算符+=,-=,*=,/=,%=等,重点讲解一个+=,其它的使用是一个道理a+=b;[等价a=a+b;]a-......
  • 11-JavaDoc生成文档
    -encodingUTF-8-charsetUTF-8Idea方法生成zh_CN-encodingUTF-8-charsetUTF-8packagecom.wang.base;/***@authorwangpengfei*@version1.0*@si......
  • 2-安装java开发环境
    安装java开发环境1.百度搜索JDK8,找到下载地址2.记住安装路径3.配置环境变量​此电脑-->属性-->高级系统设置-->​环境变量-->系统变量,新建4.配置path变量......
  • Java 关键字 final
    目录1.用来修饰一个类2.用来修饰一个方法3.用来修饰一个局部变量4.用来修饰一个成员变量final关键字代表最终,不可变的。常见的四种用法:可以用来修饰一个类可以用......
  • Java 四种权限修饰符访问权限
    四种权限修饰符访问权限:public>protected>(default)>privatepublicprotected(default)private同一个类(我自己)yesyesyesyes同一包(我邻居)y......
  • Java 计算两个数的中间值
    一个数n∈[a,b]计算中间值m第一种方法(会溢出):m=(a+b)/2inta=10_0000_0000;//10亿intb=12_0000_0000;//12亿intm=(a+b)/2;System.out.p......
  • Java构成覆盖重写的条件(图文)
    如有不足或错误的地方,欢迎讨论指正。目录总结简单示例总结子父类之间具有继承关系必须保证子父类之中的方法名称、参数列表都要相同与方法重载相区别子类方法......
  • 5.2磁盘缓存加快了磁盘访问速度
    磁盘缓存(diskcache):磁盘缓存的缓存(cache)是高速缓存、仓库的意思。磁盘缓存指的是把从磁盘中读出的数据存储到内存空间中的方式。这样一来,当接下来需要读取同一数据时,......