**多态意味着一个对象有着多重特征,可以在特定情况下,表现出不同的状态,从而对应不同的属性和方法。
**
具体来说就是指在继承过程中父类和子类中可以有多个同名但意义或者实现方式不同的属性或方法,也就是重载和覆盖。在实际应用中,还有两种特殊情形:向上转型和向下转型。
父类
public class User {
public String name = "父类";
public int b = 2;
public void print(){
System.out.println("User的类方法");
}
public void b(){
System.out.println("b");
}
}
子类
public class Student extends User{
public String name = "子类";
public int a = 1;
public void print(){
System.out.println("Student类的方法");
}
public void t(){
System.out.println("t");
}
}
向上转型和向下转型
public class helloWord {
public static void main(String[] args){
/**
*所谓向上转型即是指声明的是父类变量实例化时却是new了一个子类
* 这里User是父类声明的 new的时候调用的确实子类的构造方法Student()来实例化了一个对象
* */
User u = new Student();
/**
*所谓向下转型即是指声明的是父类变量实例化时却是new了一个子类
* 这里c1是父类声明的 new的时候调用的确实子类的构造方法c2()来实例化了一个对象
* 然后用类型转换的方式将父类声明的引用转换为子类的引用
* */
c1 c = new c2();
c.m1();
((c2) c).m1();//对象引用的强制转换 ((子类名) 父类声明的对象名)
}
}
class c1{
public void m1(){
System.out.println("c1");
}
}
class c2 extends c1{
public void m2(){
System.out.println("c2");
}
}