Java SE面向对象部分09面向对象基.docx

上传人:b****3 文档编号:26766399 上传时间:2023-06-22 格式:DOCX 页数:18 大小:1.04MB
下载 相关 举报
Java SE面向对象部分09面向对象基.docx_第1页
第1页 / 共18页
Java SE面向对象部分09面向对象基.docx_第2页
第2页 / 共18页
Java SE面向对象部分09面向对象基.docx_第3页
第3页 / 共18页
Java SE面向对象部分09面向对象基.docx_第4页
第4页 / 共18页
Java SE面向对象部分09面向对象基.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Java SE面向对象部分09面向对象基.docx

《Java SE面向对象部分09面向对象基.docx》由会员分享,可在线阅读,更多相关《Java SE面向对象部分09面向对象基.docx(18页珍藏版)》请在冰豆网上搜索。

Java SE面向对象部分09面向对象基.docx

JavaSE面向对象部分09面向对象基

JavaSE面向对象部分-09.面向对象基础(04)

 

上季内容回顾:

String类

·不可改变

·要使用直接赋值的方式

·一个字符串就是一个String类的匿名对象

·String类的相关操作方法

本季主要知识点:

引用传递

this关键字

本季开头先讲解了三种引用传递的范例帮助读者加强对引用传递的理解,之后重点阐述了this关键字的使用及对象的比较操作实现方式。

引用传递

类是引用数据类型,则传递的是一个地址。

方法的参数传递

我们来看个实例ooDemo01:

输出的值为60

我们来分析下这个实例的内存操作哈~

首先是Mm=newM();代码

然后是m.x=30;赋值

其后fun(m);调用fun()方法,在fun()方法中将对象m的地址赋值给m1

接着m1.x=60;代码修改了堆内存中x的值为60。

publicstaticvoidfun(Mm1)

   {

       m1.x=60;

   }

现在这个方法调用完了,m1对堆内存中的连接已经断开了。

现在虽然m1对x属性断开了引用,但是在堆内存所作的改动已经被保存下来了哈~所以打印输出m.x时值为60。

我们再来看个实例ooDemo03:

输出结果是abc

我们还是来分析下内存操作哈:

首先Stringstr="abc";

fun(str);调用fun()方法,将str的地址指定s

关键一步来了哈~s="bcd";将"bcd"赋值给s,我们上次已经说过了,一个对象不可能有两个地址的引用哈,所以在“bcd”赋值之前,对象s要先断开与“abc”的指向,才能与“bcd”建立连接。

然后

fun()方法调用完后,s指向的"bcd"这块空间就被回收了哈~

因此str没有被更改哈~

再观察以下一种情况:

输出是c哈,字符串的修改被保存下来了

我们还是来分析下内存操作:

首先Mm=newM();开辟空间,M类中的对象x的属性是"a"

m.x="b";

fun(m);调用fun()方法,将m的指向传递给m1

m1.x="c";修改堆内存x的值为“c”

最后System.out.println(m.x);输出的是最终修改的c

到这里我们已经讲了三个对象引用传递问题。

this关键字的使用

使用this调用属性的操作:

看下效果

以上程序中稍微有一点的不妥。

从构造方法的参数处是否可以知道它传入的两个参数分别表示什么吗?

在外部我们不知道n和a到底表示什么哈~所以我们在构造方法的参数处就将n改为name,a改为age

我们现在看下效果

发现程序没有报错,但是name输出为null,age为0哈~在程序执行到

publicPerson(Stringname,intage)

   {

       name=name;

       age=age;

   }

时,程序已经可以找到name和age的属性,所以不会再访问

privateStringname;

privateintage;

中的name和age,如果我们要访问的话,我们就要加上this.

这里就可以访问封装的属性了,我们看下效果

这就是this关键字调用属性的操作,应该不难理解。

This可以在一个类中调用其他方法(普通方法)

This可以调用本类中的其他构造方法,我们看下实例ooDemo06

我们发现没有调用

publicPerson()

   {

       System.out.println("新的对象产生!

~");

   }

如果System.out.println("新的对象产生!

");这行代码有几百行的话,那我们在构造方法处也要重复写几百行代码,非常麻烦哈~所以我们希望在构造方法赋值前先调用其上面的无参构造方法,我们来修改一下这个实例:

看下效果,发现已经通过一个样构造方法调用本类中其他的构造方法了哈~

如果在另外一个构造方法中也调用其他构造方法了,即所有的构造方法是可以不断的循环调用的时候,则会出错:

总结:

在使用this调用构造方法时,至少留一个构造方法(里面是不包含this),作为构造方法的出口。

另外如果使用this调用构造方法,则必须放在构造方法的首行。

我们来验证下,将this()与this.name和this.age换个位置,这样我们发现当name和age已经赋值完毕后,就不会执行this()了,这样程序就会报错,我们来看下实例

现在我们来看下this最重要的一个特点:

表示当前对象。

 

谁调用了这个方法,则this就表示那个对象。

我们来看下面的实例哈~

如果要想使用this的操作,在JAVAEE比较常见的只有一种叫做对象比较的情况最为常用

前提的概念:

JAVA中有一个特点,说私有属性是不能被对象直接访问的,私有属性是可以在同一类中直接进行访问的。

综合应用以上的特性(this表示当前对象及私有属性是可以在同一类中直接进行访问的概念),就可以得出一个程序:

比较两个对象是否相等。

我们看一下本季最后一个实例ooDemo10哈~

上面的程序也可以简写成这样:

ooDemo10在定义p1、p2时,我们修改一下年龄不一样滴话,程序输出应该是false,我们验证一下。

ok,验证正确是false哈~

这就是一个对象比较的基本模型,通俗滴说哈就是拿自己出发与其他人做比较。

this表示当前对象在此实例中用得比较多哈~

 

总结

1、对象的引用传递和方法中接收参数的情况

2、this关键字的使用

·属性重名时,可以通过this找到类中的属性(this.属性=当前对象.属性)

·调用构造方法:

必须放在构造方法的首行,而且必须留有一个出口

·表示当前对象:

要结合对象的引用传递和对象访问属性的一些特征,完成对象的比较操作。

########################################################################

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1