一、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的单继承性)