java中this,super,extends,implements相关继承概念讲解

     在java中有关==继承==这个词有许多关键字:super,this,extends,implements
     对于初学者来说着实比较晕,网上说的也是云里雾里。现在个人算是有些眉目了,来一次总结下这些概念。

为了方便理解,我们可以对这四个有继承含义的词语两两分组:
1、方法体内可以出现的继承组包含:==super,this==;

2、在类名上,方法体外出现的继承组包含:       ==extends,implements==;
3、此外,还可以将extends与super分为一组,他俩可以搭配使用,extends继承父类,然后使用         super继承父类中的方法,后面会说到。

我们先开门见山的来说下extends,implements:
extends是用来继承类的,而implements是用来继承接口的。
举例来说:

```java
public class extendsA {

    public String honda(String cbr){
        String cb = cbr;
        return cb;
    }
}

public class extndsB extends extendsA {

    private String suzuki;

    public String a(String cbr){
        return super.honda(cbr);
    }


    public void setSuzuki(String suzuki) {
        this.suzuki = suzuki;
    }


}
```
       A类此时是父类,由B类通过extends关键字继承,继承后,顾名思义,无非就是想使用父类的东西,类似继承家产。这里的honda方法就是A类的家产,B类继承而来,若想花掉,需要通过手续,这里的手续就是super,通过super来帮助子类B去实现父类A的honda方法,这里也就说明了上述第三分组的情况。
       而implements的使用,就是我们司空见惯的service层搭配了,通过implements实现impl实现类继承service接口。例如:

```java
public interface UserLoginService {

    UserBean userLogin(String account,String passWord);
}

@Service
public class UserLoginServiceImpl implements UserLoginService {


    private final UserLoginMapper userLoginMapper;
    @Autowired
    public UserLoginServiceImpl(UserLoginMapper userLoginMapper){
           this.userLoginMapper = userLoginMapper;
    }
//    private UserLoginMapper userLoginMapper;

    @Override
    public UserBean userLogin(String account, String passWord) {
        return userLoginMapper.userLogin(account,passWord);
    }
}
```
       也就是说implements关键字是用来各类继承interface接口的,这里要说一个implements与extends的区别就是,extends关键字后面跟的继承的类,只可以写一个类,而implements则可以同时继承多个接口,继承的接口名要用逗号隔开即可。至于具体的接口实现与父类方法的实现这里不再多说。
       以上就是写在方法体外,也就是中括号外面的继承关键字的描述,下面我们具体说说写在方法体内部的,this与super继承关键字。

        上面也略有接触,直接的说就是,super继承的是父类,this继承的是当前,准确的说,super是一个java==关键字==,==调用父类==的构造方法,而this则是指针,指向==本对象==,调用其他方法。this最常见的使用场景就是get,set方法中的**set方法**。l例如:

```java
public class extndsB extends extendsA {

    private String suzuki;

    public String a(String cbr){
        return super.honda(cbr);
    }


    public void setSuzuki(String suzuki) {
        this.suzuki = suzuki;
    }


}
```

       我们可以看到上面例子中Suzuki字段,set方法里,将参数指向了B类中的Suzuki字段来实现赋值,而方法a则是借助super关键字继承了父类中honda方法。

      总结:

extends:继承父类
implements:继承接口
super:指向自己超(父)类对象的一个指针
this:this 是自身的一个对象,代表对象本身

简单记录个人理解,表达不准,编写有误,欢迎指出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值