• Java类的封装的概念


    1、类的封装的概念

    类的封装:将东西包在一起,然后以新的完整形式呈现出来,将方法和字段一起包装到一个单元中,单元以类的形式实现。类别C语言就是封装就是以结构体的形式实现,字段相当于是int型、char型等数据;方法相当于是结构体内的函数指针(或者函数)。所以将数据和方法包装进类中,加上具体实现的隐藏(访问修饰符),共同被称为封装类,其结果是一个同时带有特征和行为的数据类型。即:定义类,定义其属性、方法的过程称为封装类

    2、访问修饰符

    访问修饰符:信息隐藏,隐藏对象的实现细节,不让外部直接访问到。信息隐藏是00P最重要的功能之一,也是访问修饰符的原因。信息隐藏的原因包括:

    (1)对模块的任何实现细节所作的的更改不会影响该模块的代码

    (2)防止用户意外修改数据,使模块易于维护和使用

    访问修饰符包含4种:privateprotectedpublic默认

    public:该类或非该类均可以访问

    private:只有该类可以访问

    protected:该类及其子类的成员可以访问,同一个包中的类也可以访问

    默认:同一包中的类可以访问

    3、封装的实现

    3.1属性封装的实现:修改属性的可见性来限制对属性的访问。

    代码实例:

    1. class Student{
    2. private int age;
    3. String name;
    4. double score;
    5. private int sex;
    6. private void myAge(int myage){
    7. age = myage;
    8. }
    9. public int getAge(){
    10. myAge(24);
    11. return age;
    12. }
    13. public void setAge(int realage){
    14. age = realage;
    15. }
    16. public void setSex(int finalsex){
    17. sex = finalsex;
    18. }
    19. public int getSex(){
    20. return sex;
    21. }
    22. void introduce(){ //方法=函数
    23. System.out.println("sex:"+sex+", name:"+name+", age:"+age+", score:"+score);
    24. }
    25. void testFunc(){
    26. System.out.println("testFunc");
    27. }
    28. }
    29. public class Demo1 {
    30. public static void main(String[] args) {
    31. Student stu1 = new Student(); //需先实例化一个对象,即开辟空间
    32. //类=模板,且不能直接使用,不能直接访问变量,先实例化开辟一个空间
    33. /*类似于:
    34. * struct Student *p;
    35. * p = malloc(sizeof(struct Student)); 给指针开辟空间
    36. */
    37. //stu1.age = 24;
    38. //stu1.sex = 1; 因为sex属性修饰词为private,同一个包的类是没有直接访问权限的
    39. stu1.name = "kk";
    40. stu1.score = 99.6;
    41. stu1.setSex(1);
    42. stu1.setAge(36);
    43. stu1.getAge();
    44. stu1.introduce();
    45. stu1.testFunc();
    46. System.out.println("sex="+stu1.getSex());
    47. }
    48. }

    由于类成员age前是private修饰的,所以main函数中类实例化后是无法对其进行访问修改操作的,除非将private修改为public或者删除它。

    3.2方法的封装

    目的:隐藏方法实现细节(方法体),向外部提供公开接口(方法头),以供安全调用简化调用,方便修改维护。根据需要,可以私有化方法,以供内部使用。

    在上述实例中,getAge()中调用私有方法myAge(int myage)来修改年龄。

    3.3封装之构造方法

    UML类图:又称统一建模语言,类的命名尽量应用领域中的术语。应明确、无歧义,以利于相互交流和理解。类的属性,操作中的可见性使用+、#、-分别表示public、protected、private。

    类的构造方法的概念和作用

    (1)构造方法负责对象的初始化工作,为对象的属性赋合适的初始值。

    (2)创建对象时,其类的构造方法确保在用户操作对象之前,系统保证初始化的进行

    构造方法的语法规则

    (1)构造方法与类名一致

    (2)没有返回类型(注意不是void类型,而是去掉它)

    (3)方法实现主要为字段赋初值

    构造方法的调用:比较特别--->>:new 操作符(实例化对象时,自动被调用),Java系统保证每个类都有构造方法。

    构造方法实例:

    1. class Student
    2. {
    3. private int age;
    4. String name;
    5. double score;
    6. Student(){ //java语言中,方法(没有返回值)是可重载的,函数名即Student可以一样,但是参数列表不同,这在C语言中确是不允许的
    7. System.out.println("构造方法1被调用");
    8. }
    9. Student(int newage, String newname){
    10. System.out.println("构造方法2被调用");
    11. age = newage;
    12. name = newname;
    13. }
    14. Student(int newage, String newname, double newscore){
    15. System.out.println("构造方法3被调用");
    16. age = newage;
    17. name = newname;
    18. score = newscore;
    19. }
    20. void introduce(){ //方法=函数
    21. System.out.println("name:"+name+", age:"+age+", score:"+score);
    22. }
    23. }
    24. public class Demo2 {
    25. public static void main(String[] args) {
    26. Student stu1 = new Student();
    27. Student stu2 = new Student(24, "xiaoshimei");
    28. Student stu3 = new Student(24, "kobe", 89.0);
    29. stu3.introduce();
    30. }
    31. }

  • 相关阅读:
    【Linux系统编程】第九弹---权限管理操作(下)
    * 论文笔记 【OffDQ: An Offline Deep Learning Framework for QoS Prediction】
    虚拟内存初探CSAPP
    【Linux】进程间通信——管道
    ChatGPT分析日本排放核污水对世界的影响
    hadoop-2.6.4集群编译搭建-阿里云和腾讯云
    IPv4报文头部
    facebook审核流程
    制作出浪漫玫瑰?SoildWorks:“我可以!”
    Leetcode560. 和为 K 的子数组
  • 原文地址:https://blog.csdn.net/weixin_47861286/article/details/125896783