Java面向对象_进阶(第7章)

this关键字的使用



​​​​1. 目前可能出现的问题?及解决方案?

我们在声明一个属性对应的setXxx方法时,通过形参给对应的属性赋值。如果形参名和属性名同名了,那么该如何在方法内区分这两个变量呢?

解决方案:使用this。具体来讲,使用this修饰的变量,表示的是属性。没有用this修饰的,表示的是形参。

2. this可以调用的结构:成员变量、方法、构造器

3. this的理解:当前对象(在方法中调用时) 或 当前正在创建的对象(在构造器中调用时)

4.1 this调用属性和方法

【针对于方法内的使用情况:(准确的说是非static修饰的方法)】

一般情况:我们通过对象a调用方法,可以在方法内调用当前对象a的属性或其他方法。此时,我们可以在属性和其他方法前
使用"this.",表示当前属性或方法所属的对象a。但是,一般情况下,我们都选择省略此"this."结构。
特殊情况:如果方法的形参与对象的属性同名了,我们必须使用"this."进行区分。使用this.修饰的变量即为属性(或成员变量),
没有使用this.修饰的变量,即为局部变量。

【针对于构造器内的使用情况:】
一般情况:我们通过构造器创建对象时,可以在构造器内调用当前正在创建的对象的属性或方法。此时,我们可以在属性和方法前
使用"this.",表示当前属性或方法所属的对象。但是,一般情况下,我们都选择省略此"this."结构。
特殊情况:如果构造器的形参与正在创建的对象的属性同名了,我们必须使用"this."进行区分。使用this.修饰的变量即为
属性(或成员变量),没有使用this.修饰的变量,即为局部变量。

4.2 this调用构造器


> 格式:"this(形参列表)"
> 我们可以在类的构造器中,调用当前类中指定的其它构造器
> 要求:"this(形参列表)"必须声明在当前构造器的首行
> 结论:"this(形参列表)"在构造器中最多声明一个
> 如果一个类中声明了n个构造器,则最多有n-1个构造器可以声明有"this(形参列表)"的结构

面向对象特征之二:继承性

1. 继承性的理解

> 生活上:财产的继承、颜值的继承
> 代码层面:
     > 自上而下:定义了一个类A,在定义另一个类B时,发现类B的功能与类A相似,考虑类B继承于类A
     > 自下而上:定义了类B,C,D等,发现B、C、D有类似的属性和方法,则可以考虑将相同的属性和方法进行抽取,
               封装到类A中,让类B、C、D继承于类A,同时,B、C、D中的相似的功能就可以删除了。

2. 继承性的好处

- 继承的出现减少了代码冗余,提高了代码的复用性。
- 继承的出现,更有利于功能的扩展。
- 继承的出现让类与类之间产生了`is-a`的关系,为多态的使用提供了前提。
  - 继承描述事物之间的所属关系,这种关系是:`is-a` 的关系。可见,父类更通用、更一般,子类更具体。

3. 继承的格式:

class A{
    //属性、方法
}

class B extends A{

}

继承中的基本概念:

类A: 父类、superClass、超类、基类
类B: 子类、subClass、派生类

4. 有了继承性以后:


> 子类就获取到了父类中声明的所有的属性和方法。
> 但是,由于封装性的影响,可能子类不能直接调用父类中声明的属性或方法。
> 子类在继承父类以后,还可以扩展自己特有的功能(体现:增加特有的属性、方法)
  extends:延展、扩展、延伸
  子类和父类的理解,要区别于集合和子集
> 不要为了继承而继承。在继承之前,判断一下是否有is a的关系。

5. 默认的父类:


Java中声明的类,如果没有显式的声明其父类时,则默认继承于java.lang.Object

6. 补充说明:


> Java是支持多层继承。
   > 概念:直接父类、间接父类
> Java中的子父类的概念是相对的。
> Java中一个父类可以声明多个子类。反之,一个子类只能有一个父类(Java的单继承性)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值