继承
is–a的关系
extends
将子类中冗余的属性和方法收集到父类中 子类继承父类
1子类继承父类 继承父类的非有私属性和方法
2子类不能继承父类的构造方法
3如果父类和子类不在同一个包中假设父类只能够的属性和方法的访问
修饰符是默认的,此时子类不能继承父类的这些属性和方法
super 关键字的作用
1子类调用父类的构造方法
2如果氟氯雷的无参或是有参构造方法
2如果子类的构造方法中,没有使用super关键字调用父类的构造方法
在子类的构造方法中默认使用super调用父类的无参构造方法
3如果子类的构造方法中 使用super关键字调用父类的构造方法,super关键字的作用
关键字应该放在子类的构造方法的第一行
子类调用父类的属性:super.<父类属性/方法>
子类调用父类的方法:super(参数)
实例化子类对象
创建该类的对象(实例化)
创建该类的子类对象 (实例化)
子类在实例化时,会首先执行其父类的构造方法,然后才执行子类的构造方法。换言之,当在Java语言中创建一个对象时,Java 虚拟机会按照父类一子类的顺序执行一系列的构造方法。子类继承父类时构造方法的调用规则如下。
(1)如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没 有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。在这种情况下,是否写“super();" 语句,效果是一样的。
(2)如果子类的构造方法中通过super显式地调用了父类的有参构造方法,那么将执行父类相应的构造方法,而不执行父类无参构造方法。
(3)如果子类的构造方法中通过this显式地调用了自身的其他构造方法,在相应构造方法中遵循以上两条规则。
特别需要注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则会多次向更高一级父类传递,一直 到执行顶级父类Object类的无参构造方法为止。
Object 类
Object类是所有类的父类。在Java中,所有的Java类都直接或间接地继承了java.lang.Object 类。Object 类是所有Java类的祖先。在定义一个类时, 没有使用extends关键字,也就是没有显式地继承某个类,那么这个类直接继承Object类。所有对象都继承这个类的方法。
方法重写
在子类中可以根据需求对从父类继承的方法进行重新编写,这称为方法的重写或方法的覆盖
方法重写必须满足如下要求。
重写方法和被重写方法必须具有相同的方法名。?重写方法和被重写方法必须具有相同的参数列表。
重写方法的返回值类型必须和被重写方法的返回值类型相同。?重写方法不能缩小被重写方法的访问权限。
请思考重载(Overloading)和重写(Overriding) 有什么区别和联系?
重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值
类型无关。
W重写涉及的是子类和父类之间的同名方法,要求方法名相同、参数列表相同、
返回值类型相同。
多态
多态词的通常含义是指能够 星现出多种不同的形式或形态。而在程序设计的术语中,它意味着一个特定类型的变量可以引用不同类型的对象,并且能自动地调用引用的对象的方法,也就是根据作用到的不同
对象类型,响应不同的操作。方法重写是实现多态的基础。通过下面这个例子可以简单认识什么是多态。
向上转型
<父类型><引用变量名>=new<子类型()>
向下转型
<子类型><引用变量名>=(<子类型>)<父类型的引用变量>
多态的优势
可替换性:多态对已存在的代码具有可替换性。
可扩充性:多态对代码具有可扩充性。增加新的子类不影响已存在类的多态
性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。
接口性:多态是父类向子类提供了一个共同接口,由子类来具体实现。?灵活性:多态在应用中体现了灵活多样的操作,提高了使用效率。
简化性:多态简化了应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时, 这个特点尤为突出和重要。