JAVA的向上转型,向下转型(泛型) A是汽车 B是某品牌的汽车(比如红旗) C是该品牌汽车的一个型号我们说C是红旗牌的汽车 是汽车 这就是向上转型我们说A是红旗牌的汽车 是XX型号的 这就是向下转型这就带出了一个问题向上转型没有问题 不管什么型号 品牌的汽车都是汽车但是不是什么汽车都是一个品牌的 一个品牌也不会都是XX型号的所以当向下转型的时候要加上 <向下转型的类型>例如: A <B> c = new A<B>();这就是JAVA SE5的重大变化之一的泛型(范型)
详细的去看看这里把 http://blog.csdn.net/kao331431214/archive/2008/12/02/3430859.aspx 讨论下面还有关于static(静态)的向上转型 或者去看看Think in java(第4版) 具体位置是第五章(初始化与清理) 的5.7.2小节(静态数据的初始化)
向上转型是把子类当做父类用。 使父类可以调用子类重写过的方法。 如: class Sp{ public void sayHi(){ Systemout.println( "Sp hi~ "); } } class S1 extends Sp{ public void sayHi(){ Systemout.println( "S1 hi~ "); } } class S2 extends Sp{ public void sayHi(){ Systemout.println( "S2 hi~ "); } } public class Test{ public static void main(String[] args){ Sp sp = new Sp(); Sp sp1 = new S1();//这就是向上转型 Sp sp2 = new S2();//这就是向上转型 sp.sayHi(); sp1.sayHi();//sp1与sp2都是 Sp类型的,可是却可以有不同的输出 sp2.sayHi(); } } 借以引用别人的理解,觉得不错!希望对你有帮助
比如有一水果类,苹果和梨子继承了水果类 class Fruit{ void sell(){ //实现略 } }class Apple extends Fruit{ void sell(){ //实现略 } }class Pear extends Fruit{ void sell(){ //实现略 } }class Test{ public static void main(String[] args){ Fruit a = new Apple();// Fruit p = new Pear();//这里还未确定具体类型呢 a.sell();//这里就出现向上转型,确定类型 p.sell();//这里就出现向上转型 } }
http://blog.csdn.net/kao331431214/archive/2008/12/02/3430859.aspx
讨论下面还有关于static(静态)的向上转型
或者去看看Think in java(第4版)
具体位置是第五章(初始化与清理)
的5.7.2小节(静态数据的初始化)
class Sp{
public void sayHi(){
Systemout.println( "Sp hi~ ");
}
} class S1 extends Sp{
public void sayHi(){
Systemout.println( "S1 hi~ ");
}
} class S2 extends Sp{
public void sayHi(){
Systemout.println( "S2 hi~ ");
}
} public class Test{
public static void main(String[] args){
Sp sp = new Sp();
Sp sp1 = new S1();//这就是向上转型
Sp sp2 = new S2();//这就是向上转型 sp.sayHi();
sp1.sayHi();//sp1与sp2都是 Sp类型的,可是却可以有不同的输出
sp2.sayHi(); }
}
借以引用别人的理解,觉得不错!希望对你有帮助
class Fruit{
void sell(){
//实现略
}
}class Apple extends Fruit{
void sell(){
//实现略
}
}class Pear extends Fruit{
void sell(){
//实现略
}
}class Test{
public static void main(String[] args){
Fruit a = new Apple();//
Fruit p = new Pear();//这里还未确定具体类型呢
a.sell();//这里就出现向上转型,确定类型
p.sell();//这里就出现向上转型
}
}
这里的sp1不是引用吗?怎么说是对象呢?要是对象的话它怎么没new啊