关于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

原文地址:https://www.cnblogs.com/yumu77/p/13689491.html