public class PersonTest {//The public type Man must be defined in its own file
public static void main(String[] args) {
Person p = new Person();
Person p1 = new Man();//这里是把new Man(里面有Man的结构和父类的结构)的地址值赋给p1
Person p2 = new Woman();
Woman w5 = (Woman)p1;//这里是把p1的地址值强转给w5。w5指向new Man
w5.goShopping();//这里应该报错因为没有new Woman,所以不应该有这个方法按我的理解这里
//编译都该报错,因为给他赋的地址值里面没有goShopping这个方法。但为什么没报错
System.out.println(w5.age);//这里又不应该报错,因为woman是person的子类,继承了
//person的方法属性,所以可以调父类的属性,输出父类的属性,但是为什么报错
}
//自己感觉上面两个应该都报错,因为没有 new Woman,但是他们语法又没报错,所以我产生了上面两个想法。
}
public class Person {
String name;
int age = 5;
public void eat() {
System.out.println("chifan");
}
public void walk() {
System.out.println("走路");
}
}
public class Man extends Person {//The public type Man must be defined in its own file
boolean isSmoking;
public void earnMoney() {
System.out.println("男人赚钱");
}
public void eat() {
System.out.println("大口吃肉");
}
public void walk() {
System.out.println("威武霸气");
}
}
public class Woman extends Person {//The public type Man must be defined in its own file
boolean isBeauty;
public void goShopping() {
System.out.println("女人爱购物");
}
public void eat() {
System.out.println("少吃");
}
public void walk() {
System.out.println("优美");
}
}
多态性的问题,内存结构不明白,向下强转不知道哪些可以。是怎么强转,下面public为什么报错,还有我的理解在下面注释里。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-sinJack 2022-04-09 22:15关注
Woman w5 = (Woman)p1;//这里是把p1的地址值强转给w5。w5指向new Man w5.goShopping();//这里应该报错因为没有new Woman,所以不应该有这个方法按我的理解这里 //编译都该报错,因为给他赋的地址值里面没有goShopping这个方法。但为什么没报错
编译不会报错,是因为w5指向了p1对应的地址。
类似:Student s1=new Student(); Student s2=s1;
s1,s2都已经实例化了,都可以调用类中的属性,方法。
w5.goShopping(); w5.age;
运行时,应该会报错,因为p1指向的是Man对象地址,又强转为Woman对象,在运行时会出现异常,应该用instanceof判断一下。
if (p1 instanceof Woman){ Woman w5 = (Woman)p1; w5.goShopping(); w5.age; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度