Java中的父类与子类

父类子类相关问题:1. 返回值 2. 参数列表 3. 内部返回 4. 类型传递

. 关于父类子类互传

前提:A方法调用B方法

关于A方法接收B方法的返回值

  1. 如果B方法定义的返回值是父类(Student),能不能在A中用(子类)StudentVo接收?不行
  2. 如果B方法定义的返回值是子类(StudentVo),能不能在A中用父类(Student)接收?可以

关于传参

  1. 如果B方法的参数列表是父类(Student),能不能将子类(StudentVo)传入参数列表?可以
  2. 如果B方法的参数列表是子类(StudentVo),能不能将父类(Student)传入参数列表?不行

关于B方法内部的返回值

  1. B方法内部,如果方法定义的返回值是父类(Student),我们可以将子类(StudentVo)进行返回
  2. B方法内部,如果方法定义的返回值是子类(StudentVo),能不能将父类(Student)返回?不行

总结:定义父类接纳子类,定义子类不接纳父类

. 关于父类接纳子类属性

出现了一个事情所以出现了这个测试:Mapper层查询的是StudentVo,返回给Service的是Vo,但是Service是用Student接收的。结果返回给前端的时候还把子类特有的属性给返回了。我和瑞哥一脸懵逼,这是为什么?

参考代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//模拟Controller层调用Service层
@Test
public void A() {

//调用B方法
Student student = B();
System.out.println(student);

}

//模拟Service层调用Mapper层
public Student B() {
return C();
}

//模拟Mapper层
public StudentVo C() {
StudentVo studentVo = new StudentVo();
studentVo.setTest("test");
return studentVo;
}
1
StudentVo(test=test)

结果就是确实是有这种情况了,B方法返回的是Student,但实际返回的是StudentVo。在A方法中打印Student对象时,由于对象本身是StudentVo类型,因此可以访问到StudentVo特有的属性。


Java中的父类与子类
http://wahoyu.xyz/2024/08/02/FatherAndSon/
作者
Wahoyu
发布于
2024年8月2日
许可协议