二刷java基础第九天——面向对象(下)
Posted 名字真的很急用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二刷java基础第九天——面向对象(下)相关的知识,希望对你有一定的参考价值。
继承
继承的出现提高了代码的复用性。
继承的出现让类与类之间产生了关系,提供了多态的前提。
关键字:extends
什么是继承?
- 第一步:找到重复代码
- 第二步:找到封装重复代码的工具
- 第三步:其他类和公共类没有联系
继承和构造方法的关系:
在子类中的构造方法的第一句有一个隐蔽的super(),而且只有一个。
继承和成员变量的关系:
- 官方的:私有的是无法被继承的
- 但是私有是可以继承的,只是没有它的访问权限
- 子类被赋予了访问super内存空间的权限
继承和成员方法之间的关系:
- public,static修饰的方法是可以被继承的(除了private,final)
方法的重写
* 方法的声明一摸一样,方法体不一样
* 权限修饰符
* 子类的一定要大于或者等于父类
* static修饰的不能被重写
多态:赋予父类访问子类的权限
*向上转型
- 前提是父类和子类公共的方法才可以访问。
- 如果我们调用的是 f 的static、final、private、这三种方法,
- 就是使用了静态绑定,虽然传入的是Son对象,但调用的仍是父类的方法,所以输出两个Father play,
- 但如果我们调用的不是这三种方法(比如other方法),那我们使用的就是动态绑定,
- 成员变量
- 编译看左边,运行看左边
- 成员方法
- 编译看左边,运行看右边
多态:
一个事物具有多种的状态
实现多态的条件:
- 要有继承关系
- 要有方法的重写
- 父类引用指向子类对象
多态的好处
可以让父类去调用子类的方法
抽象类:具有抽象方法的类
包含抽象方法的类,称为抽象类。
抽象类一定有抽象方法。
这种理解是有些片面的,一个抽象类可以不包含抽象方法;但是实际使用中不会。
这样定义,因为抽象类是不可以创建对象的,如果不包含抽象方法的话就失去了定义。
抽象类的实际意义了。
1.抽象方法必须被访问修饰符public或protected修饰,否则子类无法实现抽象方法。(编译不通过)
2.抽象类不能创建对象
3.一个类继承于抽象类,子类必须实现父类所有的抽象方法;否则将子类定义为 abstract。
什么是抽象类:
抽象就是从多个事物中将共性的,本质的内容抽取出来。
Java的抽象表示法
abstract
记住:抽象方法是不能调用的
原因就是抽象方法没有方法体。
但是,在一个类中定义了一个抽象方法,在这个类 或 这个类的子类 中是可以调用的。
为什么可以调用呢?
因为,具有抽象方法的类,一定是一个抽象类,
而抽象类在被继承的时候,必须重写这个抽象类的抽象方法,
而且,抽象类不能实例化,在使用这个抽象类的时候,使用的一定是这个抽象类的子类。
故,你在 抽象类 或 抽象类的子类 中可以使用这个抽象方法,是因为当真正实例化去使用的时候,使用的是子类重写后的实例方法。
Java抽象类的成员
- 构造方法
- 成员变量
- 成员方法
- 是否包非抽象方法
- 如果有抽象方法的类,就必须是抽象类;抽象类,不一定有抽象方法
Java接口
定义:
接口可以包含变量(public static final)和方法,是对一类事物属性和方法更高程度的抽象,对修改关闭,对扩展开放,体现了开闭原则。对外提供一种统一的协议,给事项接口的对象提供统一的属性,所以接口的属性必然是常量,只能读不能改
注意:
1.接口中的变量被隐式的指定为public static final 即常量,一般情况下, 接口中不定义变量。
2.接口中的方法被隐式的指定为public abstract
-
当我们有额外的业务(功能的),需要用接口去封装我们的业务
-
类 :不支持多继承
-
接口和定义类的方式是一样的
接口的成员
- 构造:没有构造器(不能实例化)
- 变量:不能。只能由常量
- 方法:只能是抽象方法
以上是关于二刷java基础第九天——面向对象(下)的主要内容,如果未能解决你的问题,请参考以下文章