继承
1.1继承的基本概念
继承是面向对象的三大特征之一,继承可以解决编程张代码沉余问题,是实现代码重用的重要手段之一。继承是软件可重用性的一种表现,新类可以在不增加自身代码的情况下,
通过从现有的类中继承其属性和方法,来充实自身内容,这种现象就称为继承。此时新类称为子类,现有的类称为父类。
语法格式如下
[访问修饰符] class<SubClass>extends<SuperClass>{
}
在java中继承通过extend关键字实现,其中SubClass称为子类,SuperClass称为父类或基类。
访问修饰符如果是public,那么该类在整个项目中可见。
若不写访问修饰符,则该类只在当前包中可见
在Java中子类可以从父类中继承以下内容。
1)可以继承public和protected修饰的属性和方法,不论子类和父类是否在同一个包里;
2)可以继承默认访问修饰符修饰的方法和属性,但是子类和父类必须在同一个包里;
3)无法继承父类的构造。
使用继承和重写完善类的结构
使用extends关键字建立继承关系
使用super关键字调用父类成员
使用方法重写,重写父类中的方法,输出子类自身的信息
使用super关键字调用父类成员
当需要在子类中调用父类的构造方法时,可以使用super关键字调用。
当函数参数或函数中的局部变量和成员变量同名时,成员变量会被频闭,此时若要访问成员变量则需要用“this.成员变量名“的方法来引用成员变量。super关键字也和this关键字的作用类似,
都是将屏蔽了的成员变量和成员方法变得可见可用。不过,super实在子类中,目的只有一个就是访问直接父类中被屏蔽的内容,还可以访问父类的成员包括属性、一般方法等
语法格式如下
访问父类构造方法:super(参数)
访问父类属性/方法:super.<父类属性/方法>
super只能出现在子类(子类的方法和构造方法中),而不是其他位置
super用于访问父类成员,如父类的属性、方法、构造方法。
具有访问权限的限制,如无法通过super访问父类的private成员。
实例话子类对象
在Java中,一个类的构造方法在如下两种情况下总是会被执行。
创建该类的对象(实例化)
创建该类的子类对象(子类的实例化1)
因此,子类在实例化时,会首先执行父类的构造方法,然后执行子类的构造方法。子类继承父类时构造方法的调用规则如下。
1)如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也灭有通过this显示调用自身的其他构造方法,系统则会默认先调用父类的无参构造方法。
在这种情况下,是否写”super();“语句效果是一样的
2)如果子类的构造反方法中通过super显示调用了父类的有参构造方法,那么将执行父类相应的构造方法,而不执行父类无参构造方法。
3)如果子类的构造方法中通过this显示地调用了自身的其他结构方法,在相应构造方法中遵循以上两条规则。
Object类
Object类是所有类的父类,在Java中,所有的Java类都直接或间接的继承了java.lang.Object类。Object类是所有Java类祖先。在定义一个类时,如果使用extend关键字,也就是没有显示的继承某个类,
那么这个类直接继承Object类。所有对象都继承性这个类的方法
方法重写
方法重写满足以下要求
重写和被重写方法必须具有相同的方法名
重写和被重写方法必须具有相同的参数列表
重新方法的返回值类型必须和被重写方法的返回值类型相同或时其子类
重写方法不能缩小被重写方法的访问权限
重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型无关
重写设计的时子类和父类之间的同名方法,要求方法名相同、参数列表相同、返回值类型相同。