类的继承就是一种类于类之间的包含关系,比如说,你现在有两个类,一个学生类和大学生类,大学生也是学生,它是属于学生里面的,学生包含着大学生。所以咋们把学生类,这种范围大的定义为父类。大学生类这种范围小的,定义为子类。
继承的格式是 public class 子类(派生类) extends 父类(基类,超类) {}
那我们为什么要用类的继承呢?
子类他可以继承父类的方法和属性,这样就可以大大的节约代码量,减少一点重复功能。但是私有属性不能够直接使用。
现在咋们有个学生类
public class Student {
private String name;
//定义set方法,初始化属性
public void setName(String n){
name = n;
}
//定义get方法,获取属性
public void getName(){
return name;
}
//定义学生的学习方法
public void Study(){
System.out.println(name+"正在学习!");
}
}
现在咋们写一个大学生类继承他
public class UNstudent extends Student(){
public void printName(){
System.out.println("名字"+name);
}
}
Java中的每个类都会自动继承Object类
在这咋们来讲一下方法重写这个概念
方法重写只能在有继承关系的两个类之间进行,
那为什么要方法重新
打个比方,大学生和学生都要学习,在具体到大学生学的内容肯定比学生的学习要具体的多,这时候就要重写一下方法 ,去覆盖掉父类学习的方法
方法重写的格式:访问修饰符大于等于父类,返回值类型,方法名,参数类型(个数,顺序)完全一样
访问修饰符大于等于父类是什么意思呢?
访问修饰符有四种,public protected private 和 缺失
假设你的父类的该方法的访问符是缺失 你在子类方法重写时,你就可以写 public 很明显public大于缺失。
假设你在你的父类中写了一个学习方法,现在你又在子类中重写了一下学习方法,当代码运行起来的时候,他会先跑父类的这里面的代码,但不会马上运行起来,他会接着跑一下子类的代码,当他发现你的子类中重写的该许学习方法,他就会首先调用子类的方法,而不是父类的该方法。
关于那些没有重写的方法,运行时他就直接调用父类的方法。
总结起来,重写后,调用时,即调用子类的中的方法。未重写,则调用父类中的方法。
接下来咋们说一下转型的问题
首先咋们说一下为什么要转型。
咋们假设两种情况。
第一种是在父类中有某一方法,但是呢,在你的子类中没有该方法,你又想用这个方法,这时候怎么办呢。你就可以使用自动转型(即向上转型),将你的子类的对象自动转型为父类对象,调用父类的中的该方法。
自动转型的格式: 父类 对象变量名 = new 子类();
假设你这个方法又在子类中重写了,你就自动转型了,这时候,运行的是父类中的该方法还是子类中的重写的那个方法呢
自动转型后该对象只能调用子类中重写的方法。
第二种情况是在子类中有某一方法,但是在你的父类中没有该方法,你又想用这个方法,这时候需要强制转型(向下转型),将你的父类对象转型为子类对象,调用子类的该方法。
强制转型的格式:子类 对象变量名 = (父类)父类对象名;



