面向对象之继承
- 语法
- super
- 子类创建对象
- 重写
- 扩展
- private
- 总结
super
super 关键字 当前对象的父亲
super用法
-
用于子类创建对象时,表示父类构造函数
- super()
- 用于子类无参构造函数或有参构造函数
- 若没有写出来,默认存在子类的构造函数中(不管有参,无参),表示调用的是父类的无参构造函数
- 位置一定在子类构造函数内的第一行
- 子类的属性都是默认值,需要通过set方法赋值
- 若是在子类有参构造函数中调用,子类属性赋值失败(父类相同属性),子类属性是默认值,除了子类特有的属性
例:
public Student(){
super();//没有的话 默认存在 父类构造器
}
public Student(String name ,int age){
super();//没有参数 调用这个有参子类构造器时,赋值失败
}
- super(参数名1,参数名2,参数名3)
- 用于子类有参构造函数
- 看子类的参数个数(和父类相同属性),来确定super中的参数个数 super中的参数个数小于子类的参数个数(和父类相同属性的参数)
- super中的参数个数决定调用 父类中那个构造函数
- 位置一定在子类构造函数内的第一行
例:
public Student(String name ,int age){
super(name,age);//调用父类参数对应的构造器,赋值成功
}
public Student(String name){
super(name);//调用父类参数对应的构造器,赋值成功name成功,age赋值失败,为默认值
}
- super()
-
用于表示父类属性 super.属性名;
-
用于表示父类方法 super.方法名();
子类创建对象
-
子类对象无参
Student student = new Student();
-
先调用Person(),后调用Student();
-
子类创建一个对象时,在子类内部,通过父类构造函数 创建一个父类对象(其中有子类相同的属性),若子类有特有的属性,则在子类内部,父类对象之外创建属性。
-
-
子类对象有参
Student student = new Student(“li”,22);
语法
class 一个类的名字 extends 另一个类的名字
class 子类 extends 父类(基类,超类)
例:class Student extends Person
重写
概念
-
子类重写父类的方法(修饰符、返回类型、方法名、参数类型、参数个数都保持一致,但方法里面的程序(内容)可以不一样,子类中重写方法前加注解Override)
例:父类:
public void eat(){
System.out.print(“大方”);
}
子类:
@Override
public void eat(){
System.out.print(“优雅”);
}
private
- 修饰符,私人的,私有的。
- 被private修饰的,不能被其他类所看见,所使用
- 在子类继承父类时,父类中私有的属性是不能被继承的,也就是说:不能之间使用
- 间接使用,通过set和get方法使用
扩展
概念
- 子类在父类的基础上有所扩展 extends:扩展
总结
- 子类继承了父类的属性和方法
- 除此,子类还可以拥有自己独有的属性和方法
- 一个父类可以多个(无数个)子类
- Java是单继承,不是多继承,一个子类最多只有一个父类
- 子类可以重写父类中的方法
- 如果一个类没有继承任何类,则默认继承Object类
- 不支持多重继承,但支持多层继承(子孙)
- 不能继承私有的,不能继承静态的,不能继承构造器