面向对象——类的继承

概念

在Java中,类的继承是指在一个现有类的基础上产生一个新的类,产生的新类被称为子类,现有类被称为父类,子类会自动拥有父类的属性和方法。
定义一个类继承另一个类需要使用extends关键字。如果一个类没有使用extends关键字明确标识继承另一个类,则默认继承Object类
Object类是所有类的父类,该类的方法适用于所有子类,其类中的常用方法有toString()、hashCode()等。

package Extends.Example;
//定义Son类继承Father类
public class Son extends Father{
    }
}

注意:

  1. 在Java中,类只支持单继承,不允许多重继承,即一个类只有一个直接父类。 类比一下,就是Son类直接继承了Father类,就不可以再直接继承一个Mother类。
  2. 多个类可以继承同一个父类。 例如,Son类和Daughter类都可以继承同一个Father类。
  3. 在Java中,多重继承是允许的,即一个类的父类可以再继承其他类的父类。 例如Son类继承了Father类,Father类再继承了Grandfather类,即子孙三代。

父类方法重写

在继承关系中,子类会继承父类定义中的方法,但子类也可以在父类的基础上拥有自己的特征,即对父类的方法进行重写。
注意,子类重写的方法必须与父类被重写的方法具有相同的方法名、参数列表和返回值类型。
创建父类Father

package Extends.Example;
//父类
public class Father {
    public void appearance(){
        System.out.println("圆脸");
    }
    public void high(){
        System.out.println("1.8m");
    }
}

创建子类Son

package Extends.Example;
//定义Son类继承Father类
public class Son extends Father{
    public void appearance(){
        System.out.println("瓜子脸");
    }
}

测试类Main

package Extends.Example;
public class Main {
    public static void main(){
        Son mike=new Son();//创建Son类实例对象
        mike.appearance();//调用Son类重写的appearance()方法
        mike.high();//调用父类Father的high()方法
    }
}

运行后输出:

瓜子脸
1.8m

可见当子类重写了父类方法之后,创建的子类对象会自动调用重写的方法。

super关键字

当子类重写父类的方法后,可以通过super关键字访问被重写的方法。
super关键字的用法有三种:

  1. 在子类的成员方法中,访问父类的成员变量。
super.成员变量
  1. 在子类的成员方法中,访问父类的成员方法。
super.成员方法([参数1,参数2,···])
  1. 在子类的构造方法中,访问父类的构造方法。
super[参数1,参数2,···]

还是刚才的例子:

package Extends.Example;
//父类
public class Father {
    public call(String name){
        System.out.println("我是"+name);
    }
}
package Extends.Example;
//定义Son类继承Father类
public class Son extends Father{
    public call(){
        super("儿子");
    }
}
package Extends.Example;
//定义测试类
public class Main {
    public static void main(){
        Son mike=new Son();//创建Son类实例对象
    }
}

运行结果:

我是儿子

可以看出Son类的构造方法被调用时Father类的构造方法也被调用了。
注意,通过super关键字调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次

final关键字

如果父类中的某些方法不希望再被子类重写,则必须用final关键字把他们修饰为最终方法。
final关键字可用于修饰类、变量和方法,表示不能改变或最终,因此被final修饰的类具有以下特性:

  1. final修饰的类不能被继承
  2. final修饰的类不能被子类重写
  3. final修饰的变量(包括成员变量和局部变量)是常量,并且只能赋值一次
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值