继承
首先来说我们为什么要来学习继承,也就是继承的优点是什么。
举个例子,当你定义一个学生类时
public class Student{
String name;
int age;
int score;
String stu_id;
public void study(){
System.out.println("期末会有考试");
}
}
但是呢,根据条件还需要你去定义大学生类,中学生类,小学生类,如果你还去手写这些类的各种属性和方法,那就太繁琐了,所以这是继承就出现了。
首先继承的关键字:extends
继承的格式:public class 子类名 extends 父类名{}
其中 ,子类可以继承父类的所有方法和属性,而子类也可以有自己独特的方法和属性。
举个例子,刚刚我们就已经定义学生类了,现在想定义大学生类,就可以直接写出 :
public class UnStudent extends Student{
}
public static void main(String[] args){
UnStudent a = new UnStudent();//我们上一篇文章讲的面向对象
// 然后就可以去调用父类里的属性和方法了
a.name="xx";
a.age=21;
a.study();
}
这就是继承的基本应用,替我们解决了繁琐的问题。
方法重写
继承中如果父类的方法不能满足子类的需要,则子类可以重写父亲的方法,但是子类中重写的方法需要与父类的方法(访问修饰符 返回值类型 方法名 参数类型 )一致 (除开方法体之外)。
比如说
public class Student{
String name;
int age;
int score;
String stu_id;
public void study(){
System.out.println("期末会有考试");
}
}
class UnStudent extends Student{
public void study(){
System.out.println("会有英语四级考试考试");//大学生会有英语四级考试
}
} // 这就是子类重写父类的方法来满足自己的需要
自动转型
比如说我们就是想找一个人是不是学生,那还需要考虑他是不是大学生?中学生呢? 答案一定是不需要的,所以这是我们的自动转型就显得十分重要了。
自动转型的格式:父类 对象名=new 子类();
我举个例子
public static void main(String[] args){
Student a =new UnStudent();//自动转型的格式
a.study();
}
输出的结果为
会有英语四级考试考试
也就是说我们如果使用了自动转型,他调用的方法还是子类的,但是这个方法必须是父类中含有的。
如果父类中不含有这个子类特有的方法,你自动转型后,则无法继续调用子类原来特有的方法,系统就会报错。