java封装特性

2021/6/26 14:56:57

本文主要是介绍java封装特性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

封装---面向对象三大特征性

该露的露,该藏的藏

  • 高内聚,就是类的内部数据操作细节自己来完成,不允许外部干涉

  • 低耦合,进暴露少量的方法给外部使用

封装de 定义和意义

  • 通常,应该禁止直接访问一个对象中数据的实际表示,而通过操作接口来访问,这成为信息隐藏

  • 意义

    • 提高程序的安全性,保护数据

    • 隐藏代码的实现细节。当然我们开发人员是上帝视角,肯定知道

    • 统一接口,所有对外提供的方法都是get / set,形成了规范

    • 提高了系统的可维护性

    //测试类
    package com.hxia.base.Demo_oop;
    ​
    public class Student2 {
        private String name ;
        private int age;
    ​
        public String getName() {
            return name;
        }
    ​
        public void setName(String name) {
            this.name = name;
        }
    ​
        public int getAge() {
            return age;
        }
    ​
        public void setAge(int age) {
            if (age >0 || age < 110 || age ==110){
                this.age = age;
            }else if (age > 110){
                this.age = age;
                System.out.println("寿星");
            }else {
                this.age = 3;
            }
        }
    }
    //设置快捷键 Alt + Ins
    ​
    package com.hxia.base.Demo_oop;
    ​
    //一个项目应该只存在一个main方法
    public class Application { //Application应用
        public static void main(String[] args) {
    //        Student student1 = new Student();//括号不能漏掉
    //        Student student2 = new Student();//括号不能漏掉
    //        student1.name = "lee";
    //        student2.name = "zhang";
    //        student1.age = 21;
    //        student2.age = 22;
    //        student1.study();
    //        student2.study();
    //        Student1 student1 = new Student1("lee",18);//实例化对象时,自动调构造方法
    //        student1.study();
            Student2 student2 = new Student2();
            student2.setName("LEE");
            student2.setAge(18);
            String name = student2.getName();
            final int AGE = student2.getAge(); //返回一个常量被AGE接收
            System.out.println(name+"不断努力学习,一直努力学习,坚持努力学习");
            System.out.println("终于"+AGE+"岁的"+name+"如愿以偿的实现了自己的理想");
    ​
        }
    }
    //---------------------------------------------------------------------------
    /*
    变量本来就是引用的涵义
    a=10,a引用10,a在栈中,10在堆中,a全权代表10来出席活动,相当于替身吧
    ​
    ===========================================================================
    内存理解:
         字节码文件(编译后的文件)先在方法区,它所占的内存空间可以认为固定不变的
         栈放变量名(引用变量名指向真实的类对象【类就是一个模板】等等)和main()函数变量,理解为药引子
         堆放对象(万物皆对象:属性,方法-->调用的方法,数组)
    方法区 -->堆 -->栈:
         字节码 -->具体对象(静态属性即可变成成员变量、方法本身&包含main方法、数组本身等)-->引用变量(普通变量、函数名型变量、基本数据类型变量)
                    Pet p = new Pet()中p是引用变量,new Pet()才是具体对象
                    属性也是放在堆中,因为它一般是要通过来对象(也可用类对象的引用变量)来调用的
    注意:静态方法是和类一起加载的,所以可以直接通过类模板调用(不用new)
    引用类型与基本类型:
         引用类型即对象是通过引用来运行的
     */

     

  • 只要记住这几个字就ok了: 属性私有、get/set



这篇关于java封装特性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程