zoukankan      html  css  js  c++  java
  • 关于JAVA三大特征_封装的学习

    封装:
    在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

    封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

    要访问该类的代码和数据,必须通过严格的接口控制。

    封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

    适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

    一.封装的优点
    1. 良好的封装能够减少耦合。

    2. 类内部的结构可以自由修改。

    3. 可以对成员变量进行更精确的控制。

    4. 隐藏信息,实现细节。

    二.实现JAVA封装的步骤:

      1.将属性访问权限一般设置为private

    public class Student{
            private String name;
            private int age;
    }    
            

    这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

    2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:

    public class Student{
            private String name;
            private int age;
    
      public void getName(){
             return name;
           }
      public void getAge(){
            return age;
          }
      public void setName(String name){
           this.name=name;
     }
      public void setAge(int age){
           this.age=age;
      }
    }

        set get方法生成快捷键 alt+shift+s 

     

     采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

    //private是一个访问修饰符,用private修饰的属性或者方法只能在该类的内部使用

    //我想单独获取age属性值
            System.out.println(stu.getAge());

    案例:

    练习1(基础)

    定义一个表示学生信息的类Student,要求如下:

    1Student的成员变量:

    sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩

    2)类Student带参数的构造方法:

    在构造方法中通过形参完成对成员变量的赋值操作。

    3Student的方法成员:

    getNo():获得学号; 

    getName():获得姓名; 

    getSex():获得性别;

    getAge()获得年龄;

    getJava():获得Java 课程成绩

    根据Student的定义,创建个该类的对象,输出个学生的信息计算并输出这个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值

     

     1 package day07;
     2 
     3 public class Student {
     4 
     5 private    int sNo;
     6 private    String SName;
     7 private    String sSex;
     8 private    int sAge;
     9 private    double sJava;
    10     
    11     
    12     
    13  public Student(int sNo,String SName,String sSex,int sAge,double sJava){
    14     this.sNo=sNo;
    15     this.SName=SName;
    16     this.sSex=sSex;
    17     this.sAge=sAge;
    18     this.sJava=sJava;
    19      
    20      
    21  }
    22 
    23  
    24 
    25 
    26 public int getsNo() {
    27     return sNo;
    28 }
    29 public void setsNo(int sNo) {
    30     this.sNo = sNo;
    31 }
    32 public String getSName() {
    33     return SName;
    34 }
    35 public void setSName(String sName) {
    36     SName = sName;
    37 }
    38 public String getsSex() {
    39     return sSex;
    40 }
    41 public void setsSex(String sSex) {
    42     this.sSex = sSex;
    43 }
    44 public int getsAge() {
    45     return sAge;
    46 }
    47 public void setsAge(int sAge) {
    48     this.sAge = sAge;
    49 }
    50 public double getsJava() {
    51     return sJava;
    52 }
    53 public void setsJava(int sJava) {
    54     this.sJava = sJava;
    55 }
    56  
    57 
    58 //public static void main(String[] args) {
    59 //    Student[] stu=new Student[5];
    60 //    stu[0] =new Student(10,"张三","男",18,68);
    61 //    stu[1] =new Student(11,"李四","女",18,98);
    62 //    stu[2] =new Student(12,"张三","男",18,68);
    63 //    stu[3] =new Student(13,"张三","男",18,88);
    64 //    stu[4] =new Student(14,"张三","男",18,75);
    65 //    
    66 //    int max=(int) stu[0].sJava;
    67 //    int min=(int) stu[0].sJava;
    68 //    int avg=0;
    69 //    int sum=0;
    70 //    for(int i=0;i<stu.length;i++){
    71 //        sum=sum+(int) stu[i].sJava;
    72 //        avg=sum/stu.length;
    73 //        
    74 //          if(max<stu[i].getsJava()){
    75 //             max=(int) stu[i].getsJava();
    76 //          }if(min>stu[i].getsJava()){
    77 //              min=(int) stu[i].getsJava();
    78 //           }
    79 //          
    80 //          
    81 //          }
    82 //    System.out.println("最大值为"+max);
    83 //    System.out.println("最小值为"+min);
    84 //    System.out.println("平均分为"+avg);
    85 //    }
    86 
    87 }

    测试类调用:

     1 package day07;
     2 
     3 public class TestStudent {
     4 
     5     public static void main(String[] args) {
     6         
     7         Student[] stu=new Student[5];
     8         stu[0] =new Student(10,"张三","男",18,68);
     9         stu[1] =new Student(11,"李四","女",18,98);
    10         stu[2] =new Student(12,"张三","男",18,68);
    11         stu[3] =new Student(13,"张三","男",18,88);
    12         stu[4] =new Student(14,"张三","男",18,75);
    13         
    14         int max=(int) stu[0].getsJava();
    15         int min=(int) stu[0].getsJava();
    16         int avg=0;
    17         int sum=0;
    18         for(int i=0;i<stu.length;i++){
    19             sum=sum+(int) stu[i].getsJava();
    20             avg=sum/stu.length;
    21             
    22               if(max<stu[i].getsJava()){
    23                  max=(int) stu[i].getsJava();
    24               }if(min>stu[i].getsJava()){
    25                   min=(int) stu[i].getsJava();
    26                }
    27               
    28               
    29               }
    30         System.out.println("最大值为"+max);
    31         System.out.println("最小值为"+min);
    32         System.out.println("平均分为"+avg);
    33         }
    34     }
    35 
    36     

    基础概念来自https://www.runoob.com/java/java-encapsulation.html

  • 相关阅读:
    django第10天(聚合查询,常用字段)
    django第9天(多表操作)
    django第8天(在测试文件中运行django项目|单表操作)
    django第七天(模板的复用性,include标签和母版)
    django第六天(模板相关,过滤器和标记)
    SparkCore2
    SparkCore
    SQL
    Spark基础
    使用Observer实现HBase到Elasticsearch的数据同步
  • 原文地址:https://www.cnblogs.com/yumu77/p/13689491.html
Copyright © 2011-2022 走看看