首页 技术 正文
技术 2022年11月10日
0 收藏 951 点赞 4,278 浏览 1667 个字

一、如何在一个类中创建另外一个类的对象,然后用这个类的对象的引用来访问这个对象里面的成员,如下:

//如何在一个类中创建另外一个类的对象,然后用这个类的对象的引用来访问这个对象里面的成员
Car bm = new Car();
bm.setYear();
System.out.println(bm.getYear());

二、为什么我们要用私有修饰符来修饰变量,然后通过get和set方法来访问?

通过get和set这种间接的方式来访问私有变量,其实是用到了java中的“封装”。

隐藏实现细节,对外提供公共的访问方式,私有的成员变量,比如make只能在Car类中被直接访问,而其它的类,比如ClassDemo只能通过set和get方式来调用访问,这样做的目的是为了安全,同时通过set和get方法来访问能够做判断,如果在传值的时候传入的是非法值,set判断后就不会允许成功赋值,举例如下(对年份进行判断):

package introduction;public class Car {    //颜色
private String color;
//生成商
public String make;
//型号
private String model;
//年份
private int year; //车拥有一个加速度的功能
public void acceleration() {
System.out.println("加速度了.....");
}
/*
* 为了能够区分下面这段话,这里我们将表示生产商的make定义为make1,setMake中的make
* 定义为make2,此处为了方便其它类调用,所以取名相同。
* 因为需要给make2这个变量赋值,但上面已经定义了make1是一个字符串类型的变量,
* 所以这里同样需要一个字符串类型的变量来进行接收,也取名叫make2,方便给make2赋值,
* 同时也方便调用者进行区分,
* 如果在方法主体中写成make2=make2,那么表示的都是setMake中的参数列表的中make,
* 这个make2是局部变量,make1是成员变量。
* 所以为了区分这两个make,就有了关键字this,
* 使用格式为“this.”,使用了该关键字后就能够区分局部变量和成员变量,
* 在成员变量前面加上this后变为“this.make=make”
*/
public void setMake(String make) {
//哪个对象来调用setMake方法,这个this就给哪个对象里的成员变量赋值
this.make = make;
}
//因为make是字符串类型,所以返回的make也是字符串类型,
//get的目的是为了返回这个成员变量的值给调用者
public String getMake() {
return this.make;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public int getYear() {
return year;
}
public void setYear(int year) {
if(year>1990) {
this.year = year;
}else {
System.out.println("年份无效");
}
}
}

在ClassDemo类中调用:

Car bm = new Car();
bm.setYear(1997);
System.out.println(bm.getYear());

结果:

传入的值大于“1990”则显示传入的值,否则显示为“年份无效”并显示默认值“0”(这就是私有权限时使用set能够方便进行判断)

三、封装:是面向对象的重要法则,就是把对象的属性和行为结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

四、凡是访问了对象里数据的方法,都有this的引用,只是当变量名重名时才显式的写出了加以区分。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,496
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,909
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,743
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,496
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,134
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,298