zoukankan      html  css  js  c++  java
  • java-面向对象的三大特征--封装

    1.封装的概念

      封装是面向对象的核心思想,其主要目的是将对象的属性和行为封装起来,外界不需要知道具体的实现细节,使用的时候只有通过特定的方法才能访问内部代码逻辑,也就是将类中的属性私有化(通过使用private关键字来修饰,让属性只能在本类中被访问,然后在提供几个public修饰的公用方法供外部访问)。

    2.访问权限

      Java提供了4种访问权限:
        1)Private:私有的,只有本类内部可见
        2)default:默认,同包可见
        3)Protected:受保护的,非继承,同包可见;继承的情况下,子类可见,同包可见
        4)Public :共有的,任何地方都可见

         

    3.实现封装

      封装的形式之一Getter/Setter:
        getter方法:为外部访问提供查询操作
        setter方法:为外部访问提供赋值操作
        尽可能多的隐藏代码内容
        使用private访问修饰符来隐藏要封装所有属性 

    package org.example;
    
    /**
     * 封装
     * 1.定义属性私有化
     * 2.设置公共方法供外部访问
     */
    public class Student {
        private String name; //名字私有化
        private int age;//年龄私有化
    
        /*
         *给私有化的name设置getter方法
         */
        public String getName() {
            return name;
        }
    
        /*
         *给私有化的name设置setter方法
         */
        public void setName(String name) {
            this.name = name;
        }
    
        /*
         *给私有化的age设置getter方法
         */
        public int getAge() {
            return age;
        }
    
        /*
         *给私有化的age设置getter方法
         */
        public void setAge(int age) {
            if (age <= 0){
                System.out.println("年龄不合法。。。。");
            }
            this.age = age;
        }
    
        public void introduce(){
            System.out.println("大家好!我叫"+name+",我今年"+age+"岁!");
        }
    }
    package org.example;
    
    public class Exceple1 {
        public static void main(String[] args) {
            //实例化对象并赋值给Student类型的变量stu
            Student stu = new Student();
            stu.setName("小红"); //通过公开的方法设置姓名
            stu.setAge(-10);//通过公开的方法设置年龄
            stu.setAge(18);
            stu.introduce();//调用公开方法
        }
    }

    属性私有化后,只能通过提供的公开方法访问到属性,这就是面向对象的封装特性。

    运行结果:

        

     

      

  • 相关阅读:
    Codeforces 765 E. Tree Folding
    Codeforces 617 E. XOR and Favorite Number
    2017.3.4[hihocoder#1403]后缀数组一·重复旋律
    2017.2.23[hdu1814]Peaceful Commission(2-SAT)
    2017.2.18Codeforces Round #398 (Div. 2)
    2017.2.18[codevs1170]NOIP2008提高组复赛T4双栈排序
    2017.2.18[codevs3319][bzoj3670]NOI2014D2T1动物园
    2017.2.18[codevs3311][bzoj3668]NOI2014D1T1起床困难综合症
    2017.2.10 Splay总结
    2017.2.10考试总结2017冬令营
  • 原文地址:https://www.cnblogs.com/momo-nancy/p/15227402.html
Copyright © 2011-2022 走看看