面向对象实例:小明去考试加封装版本和set() 和get()方法使用

       我们先来看看set和get这两个词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。而且,在类中使用set和get方法时,都是在set和get后面跟上一些特定的词来形成特定意思的方法名,比如setage()和getage(),表示设置年龄和获取年龄。
       然后我们来了解一下JAVA面向对象编程中的封闭性和安全性。封闭性即对类中的域变量进行封闭操作,即用private来修饰他们,如此一来其他类则不能对该变量访问。这样我们就将这些变量封闭在了类内部,这样就提高了数据的安全性,当我们想要操作这些域变量怎么办呢?我们可以通过两种方法,第一中即通过public方式的构造器(或称构造函数),对象一实例化就对该变量赋值。第二种就是通过上面提到的set和get方法,这里我举一个特定的例子,我定义一个Person类,该类中有name、age这两个私有域变量,然后我定义setname()、getname()、setage()、getage()这四个方法,通过这四个方法来实现对name和age的操作。这样一来,我不用直接对Person类中的域变量操作,而是通过set和get方法间接地操作这些变量,这样就能提高域变量的安全性,同时又保证了域变量的封装型。

       最后说说set和get方法的使用场景,一般来说set和get方法都是对私有域变量进行操作的,所以大多数都是使用在包含特定属性的类实体中。
现在你明白set和get方法了吧,其实这两个方法只是类中的setxxx和getxxx方法的总称。
       在今后的开发过程中,只要你细心体会,结合JAVA中的一些宏观的知识。set和get方法还是很容易理解的,或许你还会领会一些其他的JAVA中的重要理论知识。

package cn.itcast.domain;

import java.util.Date;

public class User {

private String username;
private String password;
private String gender;
private Date birthday;
private String email;
public String getUsername() {
  return username;
}
public void setUsername(String username) {
  this.username = username;
}
public String getPassword() {
  return password;
}
public void setPassword(String password) {
  this.password = password;
}
public String getGender() {
  return gender;
}
public void setGender(String gender) {
  this.gender = gender;
}
public Date getBirthday() {
  return birthday;
}
public void setBirthday(Date birthday) {
  this.birthday = birthday;
}
public String getEmail() {
  return email;
}
public void setEmail(String email) {
  this.email = email;
}

}

User u = new User();
u.setXXX();
u.getXXX();
你想给他赋值就用u.setXXX();    取这个类的对象的某个值 就get

------------------------------------------------------------------------------------------------------------

---

       在java中, 进行封装之后,不能公开使用public进行调用属性,使用private和default 等,进行封装,之后,在需要调用属性的时候,可以使用set() get() 方法进行调用,

       set()方法和构造方法不一样,构造方法是给变量赋初始值,set方法是赋值。

上述图片需求代码的执行结果


D:\workspace\easy\prc01>java -classpath .;classes com.ab.xm.Forobject
小明骑着一辆价值为1880.0ofo小黄车,去长江路199号浦口外国语中学考试,
小明做了选择0
小明做了选择1
小明做了选择2
小明做了选择3
小明做了选择4
小明做了判断0
小明做了判断1
小明做了判断2
小明做了判断3
小明做了判断4
小明做了判断5
小明做了判断6
小明做了判断7
小明做了判断8
小明做了判断9

代码如下

package com.ab.xm.tools;
import  com.ab.xm.Person;
import  com.ab.xm.edu.School;
public class Bike{
  // double price;
  // String color;
  // String brand;
  // String username;

  private double price;
  private String color;
  private String brand;
  private String username;

    public Bike() {

  }

  //   public Bike(double price, String brand, String color) {
 	//   this.price = price;
  //     this.color = color;
  //     this.brand = brand;
  // }

   public void setPrice(double price) {
      this.price = price;
   }
    
    public double getPrice() {
      return this.price;
    }
  
   public void setBrand(String brand) {
      this.brand = brand;
   }
    
    public String getBrand() {
      return brand;
    }

     public void setColor(String color) {
      this.color = color;
   }
    
    public String getColor() {
      return color;
    }

  public void gotoschool(Person person, School school) {
    // School school = new School();
    System.out.println(
      person.getName()
    	+ "骑着一辆价值为"
    	+ price
    	+ brand
      + color
      + ",去"
    	+ school.getAddress()
		  + school.getName()
      + "考试,"
    	);
 
  // public void gotoschool(String username, School school) {
  //   System.out.println(username
  //     + "骑着一辆价值为"
  //     + price
  //     + brand
  //     + color
  //     + ",去"
  //     + school.address
  //     + school.name
  //     + "考试,"
  //     );

  }


}
package com.ab.xm;
import  com.ab.xm.edu.School;
import com.ab.xm.tools.Bike;
import  com.ab.xm.Person;
import com.ab.xm.edu.Paper;

// import  com.ab.xm.edu.*;
// import com.ab.xm.tools.*;

public class Forobject{
   public static void main(String[] args) {
       	// Person p = new Person("小明", 15, "天润城十六街区");
       	// Bike bike = new Bike(1880, "ofo", "小黄车");
        // Paper paper = new Paper(5, 10);

   	   Person person = new Person();
   	   person.setAge(15);
   	   person.setName("小明");
   	   person.setAddress("天润城十六街区");

       School school = new School();
       school.setName("浦口外国语中学");
       school.setAddress("长江路199号");

       Paper paper = new Paper();
       paper.setChoice(5);
       paper.setJuge(10);

       Bike bike = new Bike();
       bike.setPrice(1880);
       bike.setBrand("ofo");
       bike.setColor("小黄车");
       person.goschool(bike,school);
       person.goexam(paper);
   //      School school = new School("浦口外国语中学",  "长江路199号");
   //      p.goschool(bike, school);
   //      p.goexam(paper);
   //      System.out.println();
        
   // } 

 }

}
package com.ab.xm.edu;
import  com.ab.xm.Person;
import com.ab.xm.tools.Bike;


public class Paper{
  // int choice;
  // int juge;
  private int choice;
  private int juge;

    public Paper() {

  }
   
    public void setChoice(int choice) {
    	this.choice = choice;
    }
    public int getChoice() {
    	return choice;
    }

    public void setJuge(int juge) {
    	this.juge = juge;
    }
    public int getJuge() {
    	return juge;
    }
  //  public Paper(int choice, int juge) {
	 //  this.choice = choice;
	 //  this.juge = juge;	  
  // }
    public void exam(Person person) {
   	  for(int i = 0; i < choice; i++) {
         System.out.println(person.getName() + "做了" + "选择" + i);
   	}
    
      for(int i = 0; i < juge; i++) {
         System.out.println(person.getName() + "做了" + "判断" + i);
   	}    

   // public void exam(Person person) {
   // 	  for(int i = 0; i < choice; i++) {
   //       System.out.println(person.name + "做了" + "选择" + i);
   // 	}
    
   //    for(int i = 0; i < juge; i++) {
   //       System.out.println(person.name + "做了" + "判断" + i);
   // 	}    
   }
}
package com.ab.xm;
import com.ab.xm.edu.School;
import com.ab.xm.tools.Bike;
import com.ab.xm.edu.Paper;
public class Person{
  // String name;
  // int age;
  // String address;
  // School school;
  // Bike bike;
   private String name;
   private int age;
   private String address;
   private School school;
   private Bike bike;

    public Person() {
    
  }
    public void setName(String name) {
      this.name = name;
   }
    
    public String getName() {
      return name;
    }
  
   public void setAddress(String address) {
      this.address = address;
   }
    
    public String getAddress() {
      return address;
    }

     public void setAge(int age) {
      this.age = age;
   }
    
    public int getAge() {
      return age;
    }

    public Person(String name, int age, String address) {
       this.name = name;
       this.age = age;
       this.address = address;
    }
    

  

  //   public Person(String name, int age, String address) {
  //     this.name = name;
  //     this.age = age;
  //     this.address = address;
  // }
    public void goschool(Bike bike, School school){
          bike.gotoschool(this, school);
    }

    public void goexam(Paper paper){
          paper.exam(this);
    }

}
package com.ab.xm.edu;
public class School{
  // String name;
  // String address;

  private String name;
  private  String address;

    public School(){

    }

  public void setName(String name) {
  	this.name = name;
  }
   public String getName() {
   	return name;
   }

   public void setAddress(String address) {
   	this.address = address;
   }
   public String getAddress() {
    return address;
   }
    // public School(String name, String address) {
    //   this.name = name;
    //   this.address = address; 
    // }
    
}

编译用 javac -d .  -encoding utf-8 *.java (注意,-d 后面的 “ . ”,前后各空一位)

 -d <目录>                    指定放置生成的类文件的位置

执行用 java -classpath .; classes com.ab.xm.Forobject (注意,-classpath .;-----这里,空一格再英文 点 )

转载于:https://my.oschina.net/allsmallpig/blog/1046803

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值