有两种主要体现:
1、方法的重载和覆盖
a)、重载
public void show(int a)
{
cout<<a<<endl;
}
public void show(string b)
{
cout<<b<<endl;
}
b)、覆盖
class A{ // 定义类A
public void fun1(){ // 定义fun1()方法
}
public void fun2(){
}
};
class B extends A{
public void fun1(){ // 此方法被子类覆写了
}
public void fun3(){
}
};
public class Pol{
public static void main(String asrgs[]){
B b = new B() ; // 实例化子类对象
A a = b ; // 向上转型关系
a.fun1() ; // 此方法被子类覆写过
a.fun3() ;
};
2、对象的多态性(向上转型和向下转型)
a)、向上转型
class A{ // 定义类A
public void fun1(){ // 定义fun1()方法
}
public void fun2(){
}
};
class B extends A{
public void fun1(){ // 此方法被子类覆写了
}
public void fun3(){
}
};
public class Pol{
public static void main(String asrgs[]){
B b = new B() ; // 实例化子类对象
A a = b ; // 向上转型关系
a.fun1() ; // 此方法被子类覆写过
a.fun3() ;
}
}
b)、向下转型
class A{ // 定义类A
public void fun1(){ // 定义fun1()方法
}
public void fun2(){
}
}
class B extends A{
public void fun1(){ // 此方法被子类覆写了
}
public void fun3(){
}
}
public class Pol{
public static void main(String asrgs[]){
A a = new A() ; // 实例化了一个父类对象
B b = (B)a ; // 发生了向下转型关系
b.fun1() ;
b.fun2() ;
b.fun3() ;
}
}