10.面向对象(2)

MODULE 10 面向对象

  1. 知道继承的好处
  2. 会使用继承
  3. 知道继承之后成员变量以及成员方法的访问特点
  4. 会方法的重写,以及知道方法重写的使用场景
  5. 会使用this关键字调用当前对象中的成员
  6. 会使用super关键字调用父类中的成员
  7. 会定义抽象方法以及抽象类
  8. 会重写抽象方法

一.继承

(一)什么是继承

1.我们定义了多个类,发现这些类中有很多重复性的代码,我们就定义了一个父类, 将相同的代码抽取出来放到父类中,其他的类直接继承这个父类,就可以直接使用 父类中的内容

2.怎么去继承:extends

子类 extends 父类

3.注意:

(1)子类可以继承父类中私有和非私有成员

(2)构造方法不能继承

4.继承怎么学:

(1)继承不要从是否”拥有”方面来学

要从是否能”使用”方面来学

(二)继承如何使用

1.定义一个父类,在其中定义重复性的代码

2.定义一个子类继承父类 -> extends

子类 extends 父类

3.创建子类对象,直接使用父类中非私有成员

(三)继承中成员的访问特点

1.成员变量

(1)子类和父类中的成员变量不重名

总结:子类可以调用自己的成员变量和父类非私有的成员变量;父类只能 调用父类中的成员变量

(2)子类和父类中的成员变量重名

总结:继承条件下,不管成员变量是否重名,看等号左边是谁,就先调用谁 中的成员,子类没有,找父类(适用于多态)

2.成员方法

(1)方法不重名

(2)方法重名

总结:看new的是谁,先调用谁中的方法,子类没有,找父类(适用于多态)

(四)方法的重写

1.概述:子类中有一个和父类方法名以及参数列表相同的方法

2.前提:继承

3.访问:看new的是谁,先调用谁中的,如果new的是子类,调用子类的重写方法,子 类没有,找父亲

4.检查是否为重写方法:在该方法上写@Override

5.注意事项:

(1)子类重写父类方法之后,权限必须要保证大于等于父类权限(指的是访问权 限)public -> protected -> 默认 -> private

(2)子类方法重写父类方法,方法名和参数列表要一样

(3)私有方法不能被重写,构造方法不能被重写,静态方法不能被重写

(4)子类重写父类方法之后,返回值类型应该是父类方法返回值类型的子类类 型

6.使用场景

(1)功能升级改造,子类需要对父类中已经实现好的功能进行重新改造

二.super和this关键字

(一)继承中构造方法的特点

1.注意:new子类对象时,会先初始化父类(先走父类无参构造方法)

2.原因:每个构造方法的第一行,默认都会有一个super(),不写也会自动提 供,super()代表的是父类无参构造,手动添加必须写在第一行

(二)super和this的具体使用

1.super

(1)概述:代表的是父类引用

(2)作用:可以调用父类中的成员

(3)使用:

A.调用父类构造方法 -> 在子类中的构造中写

super() -> 调用父类无参构造

super(实参) -> 调用父类有参构造

B.调用父类成员变量

super.成员变量名

C.调用父类成员方法

super.成员方法名(实参)

2.this

(1)概述:代表的是当前对象(哪个对象调用的this所在的方法,this就代表哪 个对象)

(2)作用:

A.区分重名的成员变量和局部变量

B.调用当前对象中的成员

(3)使用:

A.调用当前对象的构造:在构造中写

this():调用当前对象的无参构造

this(实参):调用当前对象的有参构造

B.调用当前对象的成员变量

this.成员变量名

C.调用当前对象的成员方法

this.成员方法名(实参)

(4)注意:

Super和this,只要在构造中写,都必须在第一行,所以二者不能同时手写 出来

(三)继承的特点

1.继承只能支持单继承,不能多继承

2.继承支持多层继承

3.一个父类可以有多个子类

4.构造方法不能继承不能重写

5.私有方法可以继承,不能被重写

6.静态方法可以继承,不能被重写

(四)调用被private修饰的成员变量

三.抽象

(一)抽象的介绍

1.抽象怎么来的

抽象共性方法,放到父类中,发现方法没法实现,因为每个子类对此方法的实现 方式细节不一样,此时方法体说不清道不明,可以定义成抽象方法

2.关键字:abstract

3.抽象方法:

修饰符 abstract 返回值类型 方法名(参数);

4.抽象类:

public abstract class 类名{}

5.注意:

(1)抽象方法所在的类一定是抽象类

(2)抽象类中不一定有抽象方法

(3)子类继承父类之后,需要重写父类中所有的抽象方法,不然编译错误

(4)抽象类不能new对象,只能通过new子类对象调动重写方法

6.抽象类可以看成是一类事物的标准,要求只要是属于这一类的,都必须要拥有抽 象类中的方法,必须要给我实现,怎么证明拥有了? -> 重写

至于这个方法怎么实现,就看子类重写之后怎么写方法体了

(二)抽象注意事项

1.抽象类不能直接new对象,只能创建非抽象子类的对象

2.抽象类中不一定非得有抽象方法,但是抽象方法所在的类一定是抽象类

3.抽象类的子类,必须重写父类中的所有抽象方法,除非该子类也是抽象类

4.抽象类中可以有成员变量,构造,成员方法

5.抽象类中可以有构造方法,是供子类创建对象时,初始化父类属性使用的

posted @ 2024-09-05 19:47  dededea  阅读(3)  评论(0编辑  收藏  举报