public class Practice { public void show(String string) { System.out.println(string); } public void show(char age) //修改一下这里 { System.out.println("age :" + age); } public static void main(String[] args) { Practice practice = new Homework(); //practice.show(12345); practice.show("shit"); practice.show('j'); } }class Homework extends Practice { public void show(char ch) { System.out.println("character is :" + ch); } @Override public void show(String string) { System.out.println("string is : " + string); } }string is : shit character is :j
也就是说你用practice"."的时候,是点不出来practice.show(Char char)方法的,所以就直接当int处理了
{
public void show(String string)
{
System.out.println(string);
} public void show(char age) //修改一下这里
{
System.out.println("age :" + age);
} public static void main(String[] args)
{
Practice practice = new Homework();
//practice.show(12345);
practice.show("shit");
practice.show('j');
}
}class Homework extends Practice
{
public void show(char ch)
{
System.out.println("character is :" + ch);
} @Override
public void show(String string)
{
System.out.println("string is : " + string);
}
}string is : shit
character is :j
public class Practice
{
public void show(String string)
{
System.out.println(string);
} public void show(char age) //注意这里
{
System.out.println("age :" + age);
} public static void main(String[] args)
{
Practice practice = new Homework();
practice.show(12345);
practice.show("shit");
practice.show('j');
}
}class Homework extends Practice
{
public void show(int ch) //注意这里
{
System.out.println("character is :" + ch);
} @Override
public void show(String string)
{
System.out.println("string is : " + string);
}
}
如果这样的话,程序出错!原因:
Practice虽然指向的是子类对象,在main中调用方法时,如果父类没有这个方法(没有int())或父类的方法可以向上转型为子类的方法(如char()),即使子类有同样的方法(如int()),也会出错;
一个类型引用只能引用引用类型自身含有的方法和变量,如果没有重写的话!