public class Base {
public String Method1() {
System.out.println("Inside Base method 1");
return "";
}
}
class Child extends Base {
static Base o = null;
public String Method1() {
System.out.println("Inside Base method 1");
return "";
}
public String Method2() {
return "Cant be called with base reference";
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Base base = new Child();
base.Method1();
base.Method2();***(Error : **The method Method2() is undefined for the type Base**)***
}
}
正如代码建议我想知道的,在内存分配中实际发生的事情是隐藏Base调用Child的额外方法以及它的名称 有没有办法通过Base调用方法。 请帮忙
答案 0 :(得分:1)
Base base = new Child();
无效,因为Base类没有带有该名称的方法,这就是错误的含义
方法2()未定义类型Base
因为你这样做:
Base base = new Child();
base.Method1();
((Child) base).Method2();
你有一个选项是投射,然后你可以调用那个方法......
pip3 install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable toc2/main
答案 1 :(得分:0)
您需要更多地了解多态性的工作原理。 您的实例是一个孩子,但您像Base一样使用它。基地对他的孩子一无所知,他只知道他的方法。 将实例强制转换为Child以访问其自定义方法。
<?php
$phone_no = $_POST['phone'];
switch($phone_no){
case "123456789":
header("Location: www.site.org");
break;
case "987654321":
header("Location: www.site2.org");
break;
default:
header("Location: www.site3.org");
break;
}
?>