继承关系下构造方法的访问特点

一,什么是继承?

        顾名思义,继承就是子承父。当多个类有共同的属性或者方法行为时,可以将这些共同点提出来,放到一个单独的类中,那么许多类只需要继承一个单独的就行了。

        这样我们可以把单独的类看作父,拥有相同属性的许多类看作子。

Java的继承:
        1.单继承的,一个子类只能有一个直接父类
        2.Java中可以多级继承
        3.一个父类可以有多个子类

二,作用好处。

        共性抽取(抽取相同的属性或方法)提高代码的复用性。

三,既然是子承父的关系,那么他们之间肯定有一定的关系。

        继承中的构造方法在这种关系下有一些特殊的访问特点。

        1,在子类的构造方法中,如果什么都没有写,则默认赠送super();意思是调用父类的无参方法(括号里可以有参数)。

 

可以看到,我们右边测试类调用子类的方法时,输出是的确是父类的方法。

这是为什么呢?其实这是因为子类的方法里有个隐藏的"super();"

我们验证一下:

 

2,所以我们在构建子类的无参构造方法时,不管我们写不写super();子类都必须一定会调用父类的构造,默认用的是无参构造。

 那如果是有参的构造方法还会赠送吗?答案是不会,看例子:

 我们在父类中构建了有参无参两种方法,然后用子类调用父类的有参方法,最后赋值输出的时候发现,只调用了有参的方法。没有调用父类的无参方法,因为我们之前试过没有写调用super();他会默认调用,这次居然没有调用,就说明子类的方法里是没有调用无参的super();。那如果我们写上呢?想知道的小伙伴可以试试看。这里的答案是如果我们手动写上super();他就会调用父类的无参了。

3,this关键字的用法

        this.访问本类成员变量;
        this.访问本类成员方法();
        this(参数);只能调用本类的其他构造方法,不能调用自己(即不能递归调用,不能在一个构造方法中通过this直接或间接调用该构造方法本身)

例如:

class Test {

Test () { this (1) ; }

Test ( int a) { this () ; }

Test ( int a, int b) { this (1, 2) ; }

}

Test()方法中调用了test(int)构造方法而Test(int)构造方法又调用了Test()构造方法,构成递归调用。Test(int, int)中调用了自身,也构成了递归调用。这三种方法的写法都是错误写法。
 

其他注意事项

                只能写在构造方法中
                1.只能是第一个语句
                2.super();也必须是第一个语句
                所以this()这种形式和super()这种形式不能同时存在
                显示的写了this(),则不再默认赠送super();
              

 

 

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值