调用private(有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

 

 

 

例如:使用

Cat.setName("可可");

Cat.setAge(2);

Cat.setColor("白色");

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
JAVA(1)定义一个圆类Circle,该圆类的数据成员包括:圆心点位置及圆的半径;方法成员有:设置圆心位置和半径的方法,获取圆心位置和半径的方法,无参的构造方法初始化圆心位置为(0,0),半径为1。另外定义一个构造方法可以接收圆心位置与半径的参数。编写测试类创建Circle类的对象,并且分别调用各种方法,对比这些方法的执行结果。(2)定义一个矩形类MyRectangle,类中有4个私有的整型变量,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);类中定义没有参数的构造方法和有4个int参数的构造方法,用来初始化类对象。类中还有以下方法:getw()—一计算矩形的宽度;getH()——计算矩形的高度;area()—计算矩形的面积;toString()—把矩形的宽、高和面积等信息作为为宇符串返回。编写代码创建MyRectangle类的对象并输出矩形对象的信息。(3)设计一个长方体类MyCube,该类包含第2题中的MyRectangle类对象作为类的成员变量,表示长方体的底面;此外还包含一个整型变量d,表示长方体的高。类中定义构造方法初始化类对象、定义求体积和表面积的方法。编写代码测试MyCube类。(4)对于第2、3题的类分别用类的访问修饰符public与无修饰符定义,同时把它们声明在同一个包中、不同的包中,分析程序的编译情况,理解类及其成员的访问控制符的作用。
06-08
(1)代码实现: ```java public class Circle { private double x; // 圆心横坐标 private double y; // 圆心纵坐标 private double r; // 圆的半径 public Circle() { // 无参构造方法 x = 0; y = 0; r = 1; } public Circle(double x, double y, double r) { // 有参构造方法 this.x = x; this.y = y; this.r = r; } public void setX(double x) { this.x = x; } public void setY(double y) { this.y = y; } public void setR(double r) { this.r = r; } public double getX() { return x; } public double getY() { return y; } public double getR() { return r; } } ``` 测试代码: ```java public class CircleTest { public static void main(String[] args) { Circle c1 = new Circle(); Circle c2 = new Circle(1, 2, 3); System.out.println(c1.getX() + ", " + c1.getY() + ", " + c1.getR()); System.out.println(c2.getX() + ", " + c2.getY() + ", " + c2.getR()); c1.setX(4); c1.setY(5); c1.setR(6); System.out.println(c1.getX() + ", " + c1.getY() + ", " + c1.getR()); } } ``` 输出结果: ``` 0.0, 0.0, 1.0 1.0, 2.0, 3.0 4.0, 5.0, 6.0 ``` (2)代码实现: ```java public class MyRectangle { private int xUp; // 左上角 x 坐标 private int yUp; // 左上角 y 坐标 private int xDown; // 右下角 x 坐标 private int yDown; // 右下角 y 坐标 public MyRectangle() { // 无参构造方法 } public MyRectangle(int xUp, int yUp, int xDown, int yDown) { // 有参构造方法 this.xUp = xUp; this.yUp = yUp; this.xDown = xDown; this.yDown = yDown; } public int getw() { // 计算矩形宽度 return xDown - xUp; } public int getH() { // 计算矩形高度 return yDown - yUp; } public int area() { // 计算矩形面积 return getw() * getH(); } @Override public String toString() { // 返回矩形宽、高和面积等信息 return "宽:" + getw() + ", 高:" + getH() + ", 面积:" + area(); } } ``` 测试代码: ```java public class MyRectangleTest { public static void main(String[] args) { MyRectangle rect = new MyRectangle(1, 1, 4, 5); System.out.println(rect.toString()); } } ``` 输出结果: ``` 宽:3, 高:4, 面积:12 ``` (3)代码实现: ```java public class MyCube { private MyRectangle bottom; // 底面矩形 private int d; // 高 public MyCube(MyRectangle bottom, int d) { // 有参构造方法 this.bottom = bottom; this.d = d; } public double volume() { // 计算体积 return bottom.area() * d; } public double surfaceArea() { // 计算表面积 return bottom.getw() * bottom.getH() * 2 + bottom.getw() * d * 2 + bottom.getH() * d * 2; } } ``` 测试代码: ```java public class MyCubeTest { public static void main(String[] args) { MyRectangle rect = new MyRectangle(1, 1, 4, 5); MyCube cube = new MyCube(rect, 3); System.out.println("体积:" + cube.volume()); System.out.println("表面积:" + cube.surfaceArea()); } } ``` 输出结果: ``` 体积:36.0 表面积:94 ``` (4)关于访问修饰符和包的访问限制,有以下几点需要注意: - 如果两个类在同一个包中,无论是否有访问修饰符,它们之间都可以访问彼此的公共成员。 - 如果两个类不在同一个包中,那么它们之间只有在公共成员的访问修饰符为 public 时才可以相互访问。 - 如果公共成员的访问修饰符为无修饰符(即 default ),那么它们只能在同一个包中被访问,不能在不同的包中访问。 针对以上情况,可以通过以下代码进行测试: 在同一个包中: ```java package com.example; public class Main { public static void main(String[] args) { Circle c = new Circle(); MyRectangle rect = new MyRectangle(); System.out.println(c.getX() + ", " + c.getY() + ", " + c.getR()); System.out.println(rect.toString()); } } class Circle { ... } class MyRectangle { ... } ``` 结果正常输出。 在不同的包中,公共成员访问修饰符为 public : ```java package com.example; import com.test.Circle; import com.test.MyRectangle; public class Main { public static void main(String[] args) { Circle c = new Circle(); MyRectangle rect = new MyRectangle(); System.out.println(c.getX() + ", " + c.getY() + ", " + c.getR()); System.out.println(rect.toString()); } } ``` ```java package com.test; public class Circle { public double getX() { return 0; } public double getY() { return 0; } public double getR() { return 1; } } ``` ```java package com.test; public class MyRectangle { public int getw() { return 0; } public int getH() { return 0; } public int area() { return 0; } public String toString() { return "Hello, world!"; } } ``` 结果正常输出。 在不同的包中,公共成员访问修饰符为无修饰符: ```java package com.example; import com.test.Circle2; import com.test.MyRectangle2; public class Main { public static void main(String[] args) { Circle2 c = new Circle2(); MyRectangle2 rect = new MyRectangle2(); System.out.println(c.getX() + ", " + c.getY() + ", " + c.getR()); System.out.println(rect.toString()); } } ``` ```java package com.test; public class Circle2 { double getX() { return 0; } double getY() { return 0; } double getR() { return 1; } } ``` ```java package com.test; class MyRectangle2 { int getw() { return 0; } int getH() { return 0; } int area() { return 0; } String toString() { return "Hello, world!"; } } ``` 编译时会报错,提示无法访问 Circle2 和 MyRectangle2 的方法和属性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值