二刷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基础第九天——面向对象(下)的主要内容,如果未能解决你的问题,请参考以下文章

二刷java基础第八天——面向对象(中)

二刷java继承第十天——面向对象(结束)

Python 基础第十六---十九天(面向对象初识)

二刷java继承第六天——面向对象(上)

第九天

二刷Java基础第十五天——初识API