java关于子类重写父类方法的疑问 java类 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是Java的多态性要求的,用到多态性的时候必须重写,因为只有重写了才能实现动态绑定,请看以下例子class Cycle { public String type() { return ""; }}class Unicycle extends Cycle { public String type() { return "Unicycle"; }}class Bicycle extends Cycle { public String type() { return "Bicycle"; }}class Tricycle extends Cycle { public String type() { return "Tricycle"; }}public class Upcasting { public static void ride(Cycle c) { System.out.println("ride " + c.type()); } public static void main(String[] args) { Unicycle uc = new Unicycle(); Bicycle bc = new Bicycle(); Tricycle tc = new Tricycle(); ride(uc); ride(bc); ride(tc); }}如果你不重写type方法而是重新写一个新的方法(把方法名改为type1,type2,type3),那么就实现不了上面程序的多态性,请看以下代码class Cycle { public String type() { return "null"; }}class Unicycle extends Cycle { public String type1() { return "Unicycle"; }}class Bicycle extends Cycle { public String type2() { return "Bicycle"; }}class Tricycle extends Cycle { public String type3() { return "Tricycle"; }}public class Upcasting { public static void ride(Cycle c) { System.out.println("ride " + c.type()); } public static void main(String[] args) { Unicycle uc = new Unicycle(); Bicycle bc = new Bicycle(); Tricycle tc = new Tricycle(); ride(uc); ride(bc); ride(tc); }} 这是java的多态机制、用于简易开发的,多用就能体会到好处。楼上的例子就是详解。 根据您的疑惑,我觉得您可以理解overwrite是java提供的一个特性。新function 和overwrite都可以解决您说的问题,overwrite还可以解决其他问题,后面再慢慢了解。 除了楼上几位说的之外,补充一点:虽然之类重写了父类的的方法,但不代表父类的方法就不会使用了.有可能父类的方法只是暂时的需要被改写.除了该子类是特殊情况以外,父类的方法仍需要继续被使用.java的多态让我们可以继续使用这两个方法.而且方法同名说明它们大致的功能很相似,可读性更高 高分求解~循环~200分 怎麼用makefile編譯JAVA文件 如何使可编辑的JComboBox的输入框高亮显示? 我测试TOMCAT时老出错,请教下~ jdbc连接数据库 求JSWDK1.0.1 java底层调用你会吗 简单问题:jdk连mysql数据库异常! 如何解决JDBC-ODBC连接SQL Server取中文值为乱码? 小弟有个关于java构造器的问题,帮忙看看。 初学jdbc出现的问题,求大神解答! 请大牛帮忙看看哪里出了错
public String type() {
return "";
}
}class Unicycle extends Cycle {
public String type() {
return "Unicycle";
}
}class Bicycle extends Cycle {
public String type() {
return "Bicycle";
}}class Tricycle extends Cycle {
public String type() {
return "Tricycle";
}
}public class Upcasting {
public static void ride(Cycle c) {
System.out.println("ride " + c.type());
} public static void main(String[] args) {
Unicycle uc = new Unicycle();
Bicycle bc = new Bicycle();
Tricycle tc = new Tricycle();
ride(uc);
ride(bc);
ride(tc);
}
}如果你不重写type方法而是重新写一个新的方法(把方法名改为type1,type2,type3),那么就实现不了上面程序的多态性,请看以下代码
class Cycle {
public String type() {
return "null";
}
}class Unicycle extends Cycle {
public String type1() {
return "Unicycle";
}
}class Bicycle extends Cycle {
public String type2() {
return "Bicycle";
}}class Tricycle extends Cycle {
public String type3() {
return "Tricycle";
}
}public class Upcasting {
public static void ride(Cycle c) {
System.out.println("ride " + c.type());
} public static void main(String[] args) {
Unicycle uc = new Unicycle();
Bicycle bc = new Bicycle();
Tricycle tc = new Tricycle();
ride(uc);
ride(bc);
ride(tc);
}
}
新function 和overwrite都可以解决您说的问题,overwrite还可以解决其他问题,后面再慢慢了解。