目录
一、首先为什么要有类的继承性?
图示继承关系
二、继承的格式
三.继承性的说明
继承代码演示
四、java.lang.Object类的说明
五、方法的重写
5.关于重写的面试题
六、super关键字
一、首先为什么要有类的继承性?
1.减少代码的冗余,提高代码的复用性
2.方便功能的拓展
3.为多态提供前提
图示继承关系
二、继承的格式
class A extends B{}
其中A是子类、派生类 b是父类、超类、基类
2.1体现:一旦子类A继承了父类B,子类就获取了父类B中声明的所有属性和方法
特殊的:如果父类中声明了private的属性和方法,仍然认为子类获取了父类私有的结构
2.2子类继承了父类后,还可以自己声明特有的属性和方法,实现了功能的拓展
三.继承性的说明
3.1一个子类只能继承一个父类
3.2一个父类可以被多个子类所继承 这是单继承性的体现
3.3子类直接继承的父类,称为直接父类
子类间接继承的父类,称为间接父类
继承代码演示
class Person{
public String name;
public int age;
private int id;
public void walk(){
System.out.println("人类走路");
}
}
public class Student extends{
public static void main(String[] args){
Student s1 = new Student();
s1.age = 20;
s1.name = "张三";
s1.walk();
public void read(){
System.out.println("学生多读名著 对自己有好处");
}
}
}
四、java.lang.Object类的说明
1.如果一个类没有显式得说明一个类的父类时,则此类继承于java.lang.Object类
2.所有的java类都直接或间接继承于java.lang.Object类
3.所有的类都有Object类的功能
五、方法的重写
1.什么是方法的重写
子类继承父类以后,可以对父类中同名同参数的方法,进行重新编写,实现方法的覆盖。
2.为什么会有方法的重写?(方法重写的作用)
子类重写父类的方法后,子类创建对象,当子类对象调用父类同名同参数的方法时,实际执行的是子类重写父类的方法。形成了子类特殊的特点,体现了拓展性
3.方法重写的举例
class Person{
public String name;
public int age;
private int id;
public void walk(){
System.out.println("人类走路");
}
}
public class Student extends{
public static void main(String[] args){
Student s1 = new Student();
public void walk(){
System.out.println("学生可以骑自行车取代步行,节省时间");
}
}
}
4.重写的规则细节
方法的声明: 权限修饰符 返回值类型 方法名(形参列表) throws 异常类型{
//方法体
}
子类重写的方法的方法名和形参列表与父类中的被重写的方法的方法名和形参列表相同
子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
特殊的:子类不可以重写父类中声明为private权限的方法
返回值类型:
父类被重写的方法返回值是void,子类重写的方法的返回值类型只能为void
父类被重写的方法返回值类型是基本数据类型,子类重写方法的返回值类型必须为相同的数据类型
父类被重写的方法的返回值为A类型,子类重写方法的返回值类型为A类或者是A的子类
子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
特殊的 :子类和父类中同名同参数的方法都声明为static的才考虑重写
声明的都是static的不是重写
5.关于重写的面试题
区分重写和重载
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写是父类和子类之间多态性的表现,重载是一个类中多态性的表现。
如果在子类中定义的某个方法和父类同名同参数,这是方法被重写。子类对象在调用此方法时,会调用子类中的方法,而不是父类的方法。
如果在一个类中定义了多个同名的方法,它们参数个数不同或参数类型不同,此称为方法的重载。
六、super关键字
1.super:可以理解为父类的
2.可以调用属性、方法、构造器
super调用属性、方法
1.可以在子类的方法、构造器,通过"super.属性"或"super.方法"方法显式调用父类中声明的属性或方法。
2.当子类和父类中定义了同名的属性时,想在子类中调用父类中声明的属性,必须显性地使用"super.属性",表示调用的是父类中声明的属性
3.当子类重写了父类的方法,想在子类的方法中调用父类被重写的方法时,必须显式的使用"super.方法",表示调用的是父类中被重写的方法
super调用构造器
1.可以在子类构造器中显式地使用"super(形参列表)"方式,显式调用父类中声明的指定构造器
2.super(形参列表)的使用,必须声明在子类构造器的首行
3.在类的构造器中this和super只能有一个
4.在构造器的首行,既没有显式的声明"this(形参列表)"或"super(形参列表)",则默认的调用的是父类中的空参构造器。super()



