/*
* 继承 :1、实现了代码的复用
* 2、使类和类之间产生了关系(被继承的的称为父类,继承的称为子类)
* 继承的特点:
* 1、单继承的 (java是单继承的)
* 单继承:一个类可以有一个父类
* 多继承:一个类可以有多个父类
*
* 继承中成员函数的特点:
* 重写(覆盖):子类在继承父类时,含有和父类中一样的函数,当创建子类对象时,执行的是重写之后的方法
* 注意:子类在重写时,权限要大于等于父类中的方法的权限
* 父类中私有的方法不能被子类重写
* 静态只能覆盖静态
* 当父类中的方法的返回值是引用类型时,子类在在重写时返回值类型可以是父类中方法的返回值类型,也可以是其子类 (自定义的类型并且存在继承关系)
*
*/
class Person {
int age;
String name;
public void eat() {
System.out.println("吃饭");
}
}
class Student extends Person {
public void student() {
System.out.println("学习");
}
}
class Work extends Person {
public void work() {
System.out.println("干活");
}
}
class Demo5 {
public static void main(String[] args) {
Work work = new Work();
work.eat();
}
}
=================================================================================================================
/*继承中构造函数的特点:在创建子类对象时,先调用父类的构造方法,再调用子类的构造方法
* 原因是系统自动在子类的构造函数的第一行中加了一条语句:super()
* super()默认调用父类无参的构造函数
*
* 注意:当父类不存在无参构造函数时,必须在子类构造函数的第一行手动加入super语句,调用父类的某个构造方法
*/
class Fu {
int age;
String name;
Fu() {
System.out.println("fu");
}
public Fu(int age, String name) {
this.age = age;
this.name = name;
}
}
class Zi extends Fu {
double weight;// 子类特有的属性
Zi() {
System.out.println("zi");
}
public Zi(int age, String name, double weight) {
super(age, name);// 调用父类的构造函数
this.weight = weight;
}
// 只有年龄和姓名的构造函数
public Zi(int age, String name) {
super(age, name);
}
}
public class Demo5 {
public static void main(String[] args) {
Zi zi = new Zi(12, "xiao");
}
}