首页 > Java > java教程 > 正文

Java 中的私有

WBOY
发布: 2024-08-30 15:22:24
原创
1121 人浏览过

Java中的关键字“private”用于建立java代码块中类、方法或变量的可访问性限制。如果一个类、方法或变量在程序中被称为私有,则意味着特定的类、方法或变量不能被该类或方法的外部访问,这与公共方法不同。 Private 关键字通常在 Java 中完全封装的类中使用。

私有关键字在 Java 中如何工作?

Java 中的私有关键字在特定类中工作。在课堂之外无法访问它。它在类/类和接口/接口之外不起作用。如果类的成员是 PRIVATE 并且在完全封装的类中也是如此,则 Private 关键字效果很好。 Private 关键字或变量或方法也可以使用某些访问修饰符来覆盖子类/类,以调用类外部的 PRIVATE METHOD。这样,私有关键字也可以仅使用私有访问修饰符在类之外工作。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

示例

下面是一些私有修饰符的示例,如下:

示例#1

这里我们以 Private Access Modifier 为例,由于从类 AB 访问私有数据成员,该示例显示编译错误,如下例所示。私有方法或私有成员只能在特定类中访问。

代码:

class AB{
private double number = 100;
private int squares(int a){
return a*a;
}
}
public class Main{
public static void main(String args[]){
AB obj = new AB();
System.out.println(obj.number);
System.out.println(obj.squares(10));
}
}
登录后复制

输出:

Java 中的私有

示例#2

这是说明在以下程序中使用 PRIVATE 关键字的示例:

代码:

class Emp{
private int id1;
private String name14;
private int age14;
public int getId1() {
return id1;
}
public void setId(int id1) {
this.id1 = id1;
}
public String getName14() {
return name14;
}
public void setName14(String name14) {
this.name14 = name14;
}
public int getAge14() {
return age14;
}
public void setAge14(int age14) {
this.age14 = age14;
}
}
public class Main{
public static void main(String args[]){
Emp e=new Emp();
e.setId(1473);
e.setName14("Pavan Kumar Sake");
e.setAge14(24);
System.out.println(e.getId1()+" "+e.getName14()+" "+e.getAge14());
}
}
登录后复制

输出:

Java 中的私有

示例 #3

在此示例中,您可以看到如何使用默认的访问修饰符将 PRIVATE METHOD 覆盖到子类。我们甚至不允许从子类调用父类方法。

代码:

class ABC{
private void msg()
{
System.out.println("Hey Buddy this is the parent class method"); //Output of the Private Method
}
}
public class Main extends ABC{ // Private method is overridden using the access modifier
void msg()
{
System.out.println("Buddy this is the child class method");
}
public static void main(String args[]){
Main obj=new Main();
obj.msg();
}
}
登录后复制

输出:

Java 中的私有

示例#4

在此示例中,我说明不能在类外部调用/调用 PRIVATE METHOD。现在,私有方法通过更改类运行时行为从外部类调用。

代码:

import java.lang.reflect.Method;
class ABC {
private void display()
{
System.out.println("Hey Now private method is invoked/Called");
}
}
public class Main{
public static void main(String[] args)throws Exception{
Class d = Class.forName("ABC");
Object p= d.newInstance();
Method n =d.getDeclaredMethod("display", null);
n.setAccessible(true);
n.invoke(p, null);
}
}
登录后复制

输出:

Java 中的私有

示例#5

这是 Java 编程语言中私有方法和字段的示例。这里私有方法在编译时使用静态绑定,甚至不能被覆盖。不要与 Private 变量输出混淆,因为 Private 变量实际上可以在内部类内部访问。如果在类外部调用 PRIVATE 变量,编译器肯定会产生错误。

代码:

public class Main {
private String i_m_private1 = " \n Hey Buddy I am a private member and i am not even accessible outside of this Class";
private void privateMethod1() {
System.out.println("Outer Class Private Method");
}
public static void main(String args[]) {
Main outerClass = new Main();
NestedClass nestc = outerClass.new NestedClass();
nestc.showPrivate(); //This syntax shows private method/methods are accessible inside the class/inner class.
outerClass = nestc;
nestc.privateMethod1(); //It don't call/invoke private method from the inner class because
// you can not override the private method inside the inner class.
}
class NestedClass extends Main {
public void showPrivate() {
System.out.println("Now we are going to access Outer Class Private Method: " + i_m_private1);
privateMethod1();
}
private void privateMethod1() {
System.out.println("Nested Class's Private Method");
}
}
}
登录后复制

输出:

Java 中的私有

优点

下面我们将解释在 Java 中使用私有方法/字段的优点。

  • 它也可以应用于Java编程语言中的方法、字段和内部类。
  • 我们不能将 private 分配给外部接口或类。
  • 在 Java 编程语言中,顶级类始终不能是 Private。
  • 当然,我们知道私有变量或私有方法不能在 java 类之外访问,但可以通过使用 setAccessible(true) 的反射并通过更改 PRIVATE 可见性以另一种方式访问​​它们。
  • 在 Java 编程语言中,此方法不能被重写,即使不在内部类中也是如此。
  • PRIVATE 成员允许 Java 虚拟机和编译器对其进行优化以获得更好的性能。

Java 私有构造函数的规则和规定

以下是您应该了解的一些私人规则和规定。

  • 如果类包含私有构造函数,则无法从外部类创建该特定类的任何对象。
  • 您不应该在类之外访问私有关键字。如果您尝试,它将产生该行为的编译错误。为此,您必须修改代码。
  • 在该 java 语言中顶级类不能是私有的。

结论

主题即将结束,我们实际上很高兴知道在 Java 中使用 Private Keyword 是多么有用和简单。在本文中,我希望您了解 private 关键字、私有变量、访问修饰符、私有构造函数,以及如何在程序中使用这些私有关键字。

以上是Java 中的私有的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板