java面向对象super_【JavaSE】面向对象之super、final

一、super关键字

它是一个指代变量,用于在子类中指代父类对象。

1.作用

指代父类对象

区分子父类同名的成员变量,区分父类中成员变量和子类中同名的局部变量

2.使用

与this相同,调用父类成员变量和成员方法:super.xx super.xxx()

调用父类构造器 super(xxx)

如果子类没有显示调用父类构造器,系统会默认在子类构造器首行调用父类空构造器

super.属性名//访问父类的属性

super.方法名(参数);//调用父类的方法。

super(参数);//调用父类的构造方法。

//初始化当前对象的父类型特征

super能出现在实例方法和构造方法中,不能使用在静态方法中。且大部分情况下可以省略。

super()只能出现在构造方法第一行,通过当前的构造方法去调用、"父类"中其它的构造方法,目的是:代码复用(创建子类对象的时候,先初始化父类型特征)。

建议手动写无参构造方法

一个类如果没有手动提供任何构造方法,系统会默认提供一个无参数构造方法。

一个类如果手动提供了一个构造方法,那么无参数构造系统将不再提供。

重要的结论:

当一个构造方法第一行既没有this()又没有super()的话,默认会有一个super();表示通过当前子类的构造方法调用父类的无参数构造方法。所以必须保证父类的无参数构造方法是存在的。

注意:this ()和super()不能共存,它们都是只能出现在构造方法第一行。

public class SuperTest {

public int num = 20;

public SuperTest() {

}

public SuperTest(int num) {

this.num = num;

}

public void test(){

System.out.println(num);

}

}

class superSon extends SuperTest{

private int num3 = 20;

public superSon() {

super();

}

public superSon(int num) {

this();//解决 this()和super()不能共存问题

}

}

二、final关键字

表示最终的,不可被修改的。

1.被final修饰的变量为常量(标识符规范)

可以修饰局部变量也可以修饰成员变量

public class FinalTest {

private final int num = 50;

public void test(){

final int num2 = 20;

}

}

e1ced49e0739

image.png

由图可见,在为被final修饰的变量重新赋值时,会报编译错误。

2.被final修饰后的方法不能被重写

public class FinalTest {

public final void test(){

int num2 = 20;

}

}

class FinalSon extends FinalTest{

//报编译异常,此重写不可行

/*public void test(){

}*/

}

e1ced49e0739

image.png

3.被final修饰的类不能被重写

public final class FinalTest {

public void test(){

int num2 = 20;

}

}

class FinalSon extends FinalTest{

}

e1ced49e0739

image.png

由此可见,被final修饰的类,不可被继承,所以也称这种被final修饰的类为“太监类”(没儿子 /狗头)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值