在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 是自身的一个对象,代表对象本身
简单记录个人理解,表达不准,编写有误,欢迎指出。