Java是面向对象的语言,所以从现在开始就要学习面向对象的方法,继承与多态
Java的继承需要关键字extends并且只能继承一个父类,没有多重继承,因为多继承会导致“ 致命方块 ” (度娘走起来)下一节的接口会解决这个问题
首先我们在学习这个之前都要问为什么学这个?这个有什么意义?
继承的意义就在于可以避免了重复的程序代码,如果想要改变这个行为程序时,只需要修改这个地方,
而子类就会发生同样的改变
开始继承的学习
首先推荐看慕课网Java入门第二季Java入门第二季这个讲的非常简单清晰,有的也会摘抄上面的内容
继承顾名思义就是接受上一辈所传递下来的家业,事物,钱财等,这里继承就是子类继承父类
子类可以继承父类的实例变量和方法,实例变量相当于钱财,方法相当于家业,家业可以进行修改,而对于Java修改就是在子类对这个方法进行覆盖,并且这个方法的内容改变,但是类型,参数,传出都要和父类是一样的
举个栗子:
public class Practice { // 带有public class的文件只能有一个且必须与文件名一致
public static void main(String[] args) {
// TODO 自动生成的方法存根
Father father = new Father();
Son son = new Son();
father.getAge();
son.age = 20;
son.getAge();
}
}
class Father{
int age = 38;
public void getAge(){
System.out.println("Father :" + age);
}
}
class Son extends Father{
// 这个就是在子类中 对 父类的方法进行覆盖
public void getAge(){
System.out.println("Son : " + age);
}
}
super的使用
super是可以调用父类的一个关键字
调用父类的实例变量 就用super.age
调用父类的方法 就用super.getAge()
<span style="font-size:18px;">public class Practice { // 带有public class的文件只能有一个且必须与文件名一致
public static void main(String[] args) {
// TODO 自动生成的方法存根
Father father = new Father();
Son son = new Son();
son.age = 20;
son.getAge();
}
}
class Father{
int age = 38;
public void getAge(){
System.out.println("Father :" + age);
}
}
class Son extends Father{
// 这个就是在子类中 对 父类的方法进行覆盖
public void getAge(){
super.getAge();// super的用法
System.out.println("Son : " + age);
}
}</span>
Object类是所有类的父类,如果某些类没有继承任何类,就是隐式的extends Object 这个Object类我会在下一节好好研究
先摘抄一下继承这的一些要点,也是书上写的要点
- 子类是extends父类出来的
- 子类会继承父类所有public类型的实例变量和方法,但不会继承父类所有private类型的变量和方法
- 继承下来的方法可以被覆盖掉,但实例变量不能被覆盖掉
- 当某个方法在子类中子类中被覆盖过,调用这个方法时会调用到覆盖过的版本
- IS-A的关系我就不写了,这个就是继承的一个测试方法。