第五章 面向对象的编程

本章主要内容是  继承 多态(反射)static final abstract 

继承--Java中的继承必须是单继承
继承的注意要点:
1.方法的覆盖:当子类中有和父类相同的方法名的方法,但是子类的该方法与父类该方法不同就会覆盖父类的方法,要求是:方法名相同,参数类型、个数相同,返回值类型相同。 且 子类中该方法的访问权限不能比父类的小。   覆盖父类方法后  使用@override注释
2.方法的重载:当我们需要使用同一个方法名,来完成不同的方法时,使用方法的重载。要求是:参数列表必须不同,方法名必须相同,其他不做要求。
3.构造器无法继承,构造器的产生只有两种方式:1.自行编写一个构造器  2.默认生成构造器。     子类中的构造器 调用父类构造器时  应该吧super()调用或者this()调用 写在第一行。
3.== 和 equals的区别与使用
==比较的是两个变量是否指向的是同一个对象地址,equals指的是两个变量的内容是否一样。在大多数情况下 equals()方法需要重写,来覆盖object根类的equals()方法(返回boolean)。主要 同时也要重写hashCode()方法(返回int)

多态--有继承关系的两个类,子类的每个对象也是父类的对象
虚方法调用:当子类中有某方法覆盖了父类中的某方法,在造型时,虽然是父类类型的对象,但是仍然执行子类的该方法。

static关键字
static静态属性
static静态方法:1.静态方法只能访问类中的静态属性和方法,非静态方法只能调用非静态方法和属性。2.静态方法不可以被覆盖,但是子类中可以有与父类中相同的静态方法的方法名,但是他们相互独立的两个方法,调用子类的静态方法只是把父类的静态方法隐藏了。3.静态方法可以被继承。
ps:构造一个含有 静态语句块、非静态语句块、构造器、方法时的执行顺序:静态语句块、非静态语句块、构造器、方法。其中静态语句块只在第一次构造对象时被实行一次。
当同时存在父类子类的时,其执行顺序是:父类静态语句块,子类静态语句块,父类语句块,父类构造器,子类语句块,子类构造器。

final关键字
特性:变量:变量被final标记后,那么这个变量只能被赋值一次,且必须在声明或者构造器中初始化后才可以使用。:被final修饰后,就不可以被继承,例如String类。方法:被final修饰的方法,不可以被覆盖,可以被继承。在子类中不可以出现同名且同参数的方法。

abstract关键字
定义:可以修饰方法、类。抽象类可以没有抽象方法,但是有抽象方法的类一定是抽象类。抽象类可以继承抽象类。父抽象类一定要在子非抽象类中实现所有的抽象方法。

interface接口
特性:接口无法实例化。定义:接口十描述类能够执行什么功能的,是对类的一组需求定义。接口中没有构造器。
接口和抽象类:接口主要描述类有什么功能,抽象类是描述这个类究竟是什么,本质还是一个类。接口可以继承多个接口,抽象类也可以继承多个接口。而抽象类只能继承抽象类。接口只能包含抽象方法,而抽象类可以包含抽象方法和普通方法,构造器等等。



















原文地址:https://www.cnblogs.com/jarl/p/5893030.html