Java中private关键字详细用法实例以及解释

 更新时间:2024年01月30日 09:45:28   作者:黎鹤舞828  
这篇文章主要给大家介绍了关于Java中private关键字详细用法实例以及解释的相关资料,在Java中private是一种访问修饰符,它可以用来控制类成员的访问权限,文中将用法介绍的非常详细,需要的朋友可以参考下

一、为什么要使用private

​ 出于 安全性考虑,我们在写字段时,尽量考虑采用 封装,这样可以隐藏类的细节,只对外开放接口即可实现对象之间的交互。

二、private关键字的定义

  • private是 一个访问限定修饰符

  • 可修饰的的范围:

    修饰成员变量:
    表示当前成员变量只能在当前类中使用

    修饰成员方法:

    表示当前成员方法只能在当前类中使用

附:访问限定修饰符图表

三、private代码的实例

修饰成员变量时:

class Person {
    private String name = "张三";
    int age = 18;
}

class Student extends Person {

    public String gender;
}
public class Test {
    //private关键字测试
    public static void main(String[] args) {

        Person person = new Person();
        Person p = new Student();

        //编译均无法通过,因为String name 属性被 private修饰
        System.out.println(person.name);
        System.out.println(p.name);
    }

如下:

那么如何让其他类使用到private的成员变量呢?

​ 我们可以创建一个 public 方法,在方法里 仅return 被private修饰的变量

​ 这里我们用getName() 方法来传递name的值;

class Person {
    private String name = "张三";
    int age = 18;

    //用来传递private修饰的name的值
    public String getName() {
        return name;
    }
}

public class Test {


    //private关键字测试
    public static void main(String[] args) {

        Person person = new Person();

        System.out.println(person.getName());
    }

​ 同理,如果我们想对private修饰的变量进行赋值,可以建立一个setName()方法

class Person {
    private String name = "张三";
    int age = 18;

    //用来传递private修饰的name的值
    public String getName() {
        return name;
    }

    //用来修改private修饰的name的值
    public void setName(String name) {
        this.name = name;
    }
}

public class Test {


    //private关键字测试
    public static void main(String[] args) {

        Person person = new Person();

        System.out.println("修改之前:" + person.getName());
        person.setName("李四");
        System.out.println("修改之后:" +person.getName());
    }
}

运行结果如图:

注: 如果你使用的集成开发环境是IDEA,那么可以使用快捷键快速创建 Getter and setter函数

如果点击 Getter and Setter,编译器会自动创建好上述两个方法;

如果只想创建Getter 或 是Setter方法,只用点击上面的 Getter 或者是 Setter就可以了。

补充:用简单的实践代码操作讲解

0、为什么封装函数?

(为了更灵活方便运用代码,将封装好的函数另存一个java文件,写程序的时候写简短的代码调用封装函数,可以避免由于程序过多,不好整理代码,也可以减少在繁琐的代码中寻找错误和修改程序)

废话少说,回归正题:

1、用private封装好需要的函数:

public class 练习封装函数 {
private String name;//封装一个姓名的函数
private String sex;//封装性别函数
private int number;//封装学生的学号函数
private double score;//封装学生的成绩函数
}

2、封装好函数后,访问被封装好的函数属性内容,就要用到Setter和Getter方法来实现,(即给封装的各个函数进行初始化设置)

  • Setter方法:对属性内容进行定义和赋值;
  • Getter方法:读取属性内容信息。

(一个一个写有些繁琐,如果是eclipse软件,可用快捷键shift+alt+s弹出窗口选 生成setter和getter方法,把封装的所有函数打上勾生成即可)(代码下面都有相关注释)

public void setName(String name) {
		this.name = name;
	}
public String getName() {
		return name;
	}
public String setSex() {
		this.sex;
	}
public String getSex() {
		return sex;
	}
public int setNumber() {
		this.number;
	}
public int getNumber() {
		return number;
	}
public double setScore() {
		this.score;
	}
public double getScore() {
		return score;
	}

【注】getter方法必须有返回值return,setter和getter方法中的数据类型必须与封装函数的类型保持一致!

3、封装好的函数setter和getter初始化完成后,给程序定义一个输出函数:

public void show() {
		System.out.println("姓名:"+name+"\n"+"性别:"+sex+"\n"+"学号:"+number+"\n"+"成绩:"+score);
	}

然后在同一包里面新建JAVA类,在class块里面输入调用函数的代码:

public static void main(String[] args) {
		练习封装函数 s1 = new 练习封装函数();
		s1.setName("小明");
		s1.setSex("男");
		s1.setNumber(202002039)
		s1.setScore(99);
		s1.show();//调用上面写好的输出函数
	}

显示结果为:

姓名:小明
性别:男
学号:202002039
成绩:99

总结

到此这篇关于Java中private关键字详细用法实例以及解释的文章就介绍到这了,更多相关Java private关键字用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java错误org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sjks.mapper.Use

    Java错误org.apache.ibatis.binding.BindingException: Inval

    本文主要介绍了Java错误org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sjks.mapper.Use,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • JSP request.setAttribute()详解及实例

    JSP request.setAttribute()详解及实例

    这篇文章主要介绍了 javascript request.setAttribute()详解及实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • MapReduce中ArrayWritable 使用指南

    MapReduce中ArrayWritable 使用指南

    MapReduce是一种编程模型,用于大规模数据集的并行运算。概念"Map(映射)"和"Reduce(归约)"和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
    2014-08-08
  • java调用webservice的.asmx接口的使用步骤

    java调用webservice的.asmx接口的使用步骤

    这篇文章主要介绍了java调用webservice的.asmx接口的使用步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java基础之浅谈hashCode()和equals()

    Java基础之浅谈hashCode()和equals()

    今天给大家带来的是关于Java基础的相关知识,文章围绕着hashCode()和equals()展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • java正则表达式验证邮箱、电话号码示例

    java正则表达式验证邮箱、电话号码示例

    这篇文章主要介绍了java正则表达式验证邮箱、电话号码示例,需要的朋友可以参考下
    2014-03-03
  • spring学习之@SessionAttributes实例解析

    spring学习之@SessionAttributes实例解析

    这篇文章主要介绍了spring学习之@SessionAttributes实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • mybatis的if判断integer问题

    mybatis的if判断integer问题

    这篇文章主要介绍了mybatis的if判断integer问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java MethodHandles介绍与反射对比区别详解

    Java MethodHandles介绍与反射对比区别详解

    这篇文章主要为大家介绍了Java MethodHandles介绍与反射对比区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • redis redisson 限流器的实例(RRateLimiter)

    redis redisson 限流器的实例(RRateLimiter)

    这篇文章主要介绍了redis redisson 限流器的实例(RRateLimiter),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论