As the tree falls, so shall it lie. 自作自受。
2024-12-12
在牛客打卡3135天,今天也很努力鸭!
全部评论

相关推荐

2024-12-19 16:46
已编辑
长沙理工大学 算法工程师
class Parent {    int x = 10;    public void print() {        System.out.println("Parent's print method");    }}class Child extends Parent {    int x = 20;    public void print() {        System.out.println("Child's print method");    }}class aaa{public static void main(String[] args) {       Parent p = new Child();/*Chlid中有Parent的域?因为子类只是隐藏?*/       System.out.println(p.x);       p.print();//p是从Child那赋值来的,print方法已经被覆盖               if (p instanceof Child) {        ((Child) p).print2();        }       /*在代码p.print2();中会出现错误,原因在于变量p的类型是Parent。       虽然它实际指向的对象是Child类型(通过new Child()创建的),       但在编译阶段,编译器只会根据变量声明的类型(也就是Parent类型)来检查能够调用的方法。       由于Parent类中并没有定义print2这个方法,所以编译器认为通过p调用print2是不合法的操作,       从而报错。如果想要调用print2方法,需要先将p进行向下转型(前提是确定实际对象是Child类型)*/}}
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务