博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础:4.2 对象和类(二)、数据域封装、this
阅读量:6676 次
发布时间:2019-06-25

本文共 2862 字,大约阅读时间需要 9 分钟。

1、数据域封装

为了避免对数据域的直接修改,应该使用Private修饰符将数据域声明为私有的,这称为数据域封装。

在定义私有数据域的类外的对象是不能访问这个数据域的。但是经常会有客户端需要存取、修改数据域的情况。为了能够访问私有数据域,可以提供一个get 方法返回数据域的值。为了能够更新一个数据域,可以提供一个set 方法给数据域设置新值。get 方法也被称为访问器(accessor), 而set 方法称为修改器(mutator)。

public returnType getPropertyName()public boolean isPropertyName()public vodi setPropertyName(dataType propertyValue)

举例:

public class Circle {    private double radius=1;   //私有的,可以防止被篡改。    private static int circleNumber =0;        /*	set radius */    Circle(){        circleNumber++;    }    Circle(double newRadius){        radius = newRadius;        circleNumber++;    }        /* return radius */    public double getRadius() {    	return radius;    }    /* set radius */    public void setRadius(double newRadius) {    	radius = (newRadius >=0) ? newRadius : 0;    }    /* get the number of all circles */    public static int getNumberOfCircle() {    	return circleNumber;    }        public double getArea(){        return radius*radius*Math.PI;    }}

 

2、对象数组

之前学过了怎么申明数组,这里把对象和数组的知识结合在一起————申明、使用对象数组

package day06;public class TestClass {	public static void main(String[] args) {		// TODO Auto-generated method stub		Circle[] c = new Circle[5];    // 创建了5个对象的数组		for(int i=0;i
package day06;import java.util.Random;public class TestClass {	public static void main(String[] args) {		// TODO Auto-generated method stub		final int number = 5;		Circle[] CircleArray;		CircleArray = creatCircleArray(number);		printArray(CircleArray);		printSum(CircleArray);	}		public static Circle[] creatCircleArray(int number) {		Circle[] c = new Circle[number];		for (int i=0;i

3、this

this的主要三个作用

(1)this调用本类中的属性,也就是类中的成员变量;

(2)this调用本类中的其他方法;

(3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。

应用一:引用成员变量

Public Class Student {    String name;           //定义一个成员变量name    private void SetName(String name) {         //定义一个参数(局部变量)name    this.name=name; }             //将局部变量的值传递给成员变量} 

          //两个变量名字如果相同的话,那么Java如何判断使用哪个变量?

     此时this这个关键字就起到作用了。this这个关键字其代表的就是对象中的成员变量或者方法。也就是说,如果在某个变量前面加上一个this关键字,其指的就是这个对象的成员变量或者方法,而不是指成员方法的形式参数或者局部变量。

         不过有些程序员即使在没有相同变量的时候,也喜欢使用this.成员变量的形式来引用变量,这主要是从便于代码的阅读考虑的。一看到这个this关键字就知道现在引用的变量是成员变量或者成员方法,而不是局部变量。这无形中就提高了代码的阅读性

 

应用二:调用类的构造方法

public class Circle {        private double radius;        public Circle(double radius) {              this.radius = radius; }        //  1方法. this关键字用于引用所构建的对象的隐藏数据域radius        public Clrcle() {         thls(1.0);           //  this关键字用于调用另外一个构造方法}

    如果要使用这种方式来调用构造方法的话,有一个语法上的限制。一般来说,利用this关键字来调用构造方法,只有在无参数构造方法中第一句使用this调用有参数的构造方法。否则的话,翻译的时候,就会有错误信息。这跟引用成员变量不同。如果引用成员变量的话,this关键字是没有位置上的限制的。如果不熟悉这个限制的话,那么还是老老实实的采用传统的构造方法调用方式为好。虽然比较麻烦,但是至少不会出错。

应用三:返回对象的值

        this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用。如在代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如代码在上面student类中,那么代码代表的含义就是return student。可见,这个this关键字除了可以引用变量或者成员方法之外,还可以作为类的返回值,这才是this关键字最引人注意的地方。

转载于:https://www.cnblogs.com/l20902/p/10610950.html

你可能感兴趣的文章
前端面试自查
查看>>
解读 Node 核心模块 Stream 系列一( Readable )
查看>>
webpack入门笔记——热替换
查看>>
拒绝一针串到底式的参数类
查看>>
Wakatime 不升级会员也能查看历史数据了!
查看>>
优雅的实现CALayer的"AutoLayout"的两种方案
查看>>
从双十一看阿里云安全的“创世纪”——采访阿里云安全掌门人肖力有感
查看>>
基于django的视频点播网站开发-step4-首页功能
查看>>
告别李国庆,19岁当当的思变与求变
查看>>
汽车电商纷纷折戟,新零售能唱好这出戏吗?
查看>>
localStorage
查看>>
Runtime 从NullSafe源码看消息转发 机制
查看>>
JavaScript 论代码执行上下文
查看>>
这应该是你们想要的 DOS 命令
查看>>
可不可以设计出一个完美的分布式系统?
查看>>
阿里云移动端播放器高级功能---直播时移
查看>>
前端性能优化--懒加载和预加载
查看>>
泛型之泛型方法
查看>>
bitcoin: 何为燃烧地址
查看>>
leetcode380. Insert Delete GetRandom O(1)
查看>>