##上转型 ####1.几组同义词
1.父类/超类/基类 2.子类/导出类/继承类/派生类 3.静态绑定/前期绑定 4.动态绑定/后期绑定
####2.向上转型,调用父类方法
package shangzhuanxing;
class Shape{
static void draw(Shape s){
System.out.println("shaoe draw.");
}
}
class Circle extends Shape{
static void draw(Circle c){
System.out.println("Circle draw");
}
}
public class test{
public static void main(String args[]){
Circle c=new Circle();
Shape.draw(c);
}
}
输出为 : Shape draw 由于明确指出是父类Shape的方法,那么其行为必然是这个方法对应的行为,没有任何歧义可言
####3.向上转型,动态绑定
package shangzhuanxing;
class Shape1{
public void draw(){
System.out.println("Shape draw");
}
}
class Circle1 extends Shape1{
public void draw(){
System.out.println("Circle draw");
}
}
public class test1{
public static void test1(Shape1 s){
s.draw();
}
public static void main(String[] args){
Circle1 c=new Circle1();
test1(c);
}
}
####4.向上转型,静态绑定
package shangzhuanxing;
class Shape2{
public static void draw(){
System.out.println("Shape draw.");
}
}
class Circle2 extends Shape2{
public static void draw(){
System.out.println("circle draw.");
}
}
public class test2{
public static void drawintest(Shape2 s){
s.draw();
}
public static void main(String [] args){
Circle2 c=new Circle2();
drawintest(c);
}
}
输出为: Shape draw 方法被static 所以得到不同的效果