Person a=new Son();其中Person是父类,Son是子类。Son s1=(Son) a;其中涉及到了类型强转,请解释一下
时间: 2024-04-07 21:31:35 浏览: 20
在Java中,类的继承关系可以用父类和子类来表示,子类是父类的一个特殊实现。在这个例子中,a是Person类型的变量,它被赋值为一个Son类型的对象。这是因为Son是Person的子类,所以Son类型的对象可以被赋值给Person类型的变量。
但是,由于a被声明为Person类型的变量,它只能调用Person类中定义的方法和属性,而不能调用Son类中定义的方法和属性。为了能够调用Son类中定义的方法和属性,需要将a强制转换为Son类型,即将Person类型的变量转换为Son类型的变量。
这里使用了强制类型转换,即将a强制转换为Son类型,赋值给s1变量。这样,s1就可以调用Son类中定义的方法和属性了。需要注意的是,如果a并不是一个Son类型的对象,强制类型转换会抛出ClassCastException异常。
相关问题
父类person子类son,可以直接person a ;利用a 来对person里面成员的运用吗
在面向对象编程中,子类可以继承父类的成员,包括属性和方法。如果你创建了一个子类 `Son`,并且它继承了父类 `Person`,那么你可以创建一个 `Son` 的实例,例如 `son = Son()`。
在这个实例中,你可以直接使用从父类继承的方法和属性,例如 `son.name` 可以访问到 `Person` 类中的 `name` 属性,同时你也可以调用 `Person` 类中的方法,例如 `son.say_hello()` 可以调用 `Person` 类中的 `say_hello()` 方法。
所以,如果你有一个 `Person` 类的实例 `a`,你也可以使用它来访问 `Person` 类中的属性和方法。例如,如果 `a` 是 `Person` 类的实例,你可以通过 `a.name` 来访问 `Person` 类中的 `name` 属性,或者通过 `a.say_hello()` 来调用 `Person` 类中的 `say_hello()` 方法。不过需要注意的是,如果 `Person` 类中的某个方法是被重写的,那么在子类 `Son` 的实例中调用该方法时,实际上会调用子类中的方法,而不是父类中的方法。
person p person p = new person 的区别
在Java中,`person p` 和 `person p = new person` 有很大的区别。
`person p` 只是声明了一个名为p的person类型变量,但是并没有创建person对象。这意味着,在使用p之前需要先创建一个person对象。例如:
```
person p; //声明一个person类型变量p
p = new person(); //创建一个person对象并将其赋值给p
```
而 `person p = new person()` 则是声明并创建了一个person对象。这意味着,在使用p时,我们已经有了一个可用的person对象。例如:
```
person p = new person(); //声明并创建一个person对象p
p.setName("John"); //使用p对象的setName方法给p对象设置一个名字
```
因此,`person p` 只是声明变量,而 `person p = new person()` 则是声明变量并创建对象。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)