Java-面向对象12--多态

多态

多态的抽象理解
比如一个“人类” 人类有一个行为是休息, 一个“男人”一个“女人”,男人有一个休息方法是发游戏,女人也有一个休息方法是买买买
从代码角度理解

  • “人类”是一个父类
  • 人类有一个“休息”方法 放松

  • “男人”子类继承于人类
  • 男人有一个“休息”方法是“打游戏”

  • “女人”子类继承于人类
  • 女人有一个“休息”方法是“买买买”

那么多态就是

  • 同一方法可以根据对象的不同而采用多种不同的行为方式。
  • 一个对象的实际类型是确定的,但可以指向的引用类型有很多(例如父类 或者是长辈类)

多态存在的前提

  • 有继承关系
  • 子类重写了父类的方法
  • 父类引用类型指向子类对象

注意点

  1. 多态是方法的多态,属性没有多态。
  2. static静态方法 final常量 private私有方法不能被重写,无法满足多态的前提

代码实例

//Person父类
public class Person {
    String name;
    public void rest(){
        System.out.println("放松");
    }
}
//--------------------------------
//Man子类
public class Man extends Person{
    public void rest(){
        System.out.println("打游戏");
    }public void in(){
        System.out.println("男in");
    }
}
//--------------------------------
//Woman子类
public class Woman extends Person{
    public void rest(){
        System.out.println("买买买");
    }
    public void in(){
        System.out.println("女in");
    }
}	
//--------------------------------
//测试类  
public class Application {
    public static void main(String[]args){
        //创建一个男人对象叫小明
        Man xm=new Man();
        //调动小明的休息方法
        xm.rest();//打游戏
        //创建一个女人对象叫小红
        Woman xh=new Woman();
        //调动小红的休息方法
        xh.rest();//买买买
        //----------------------
        //那么我们利用多态来分别使用小明和小红的休息方法
        //person引用类型指向男人对象创建一个小明2
        Person xm2=new Man();
        //调用小明2休息方法
        xm2.rest();//打游戏
        //person引用类型指向女人对象创建一个小明2
        Person xh2=new Woman();
        //调用小明2休息方法
        xh2.rest();//买买买
        //-------------------------
        //当父类中没有in方法时 子类中有时
        xm2.in();//会直接报错找不到in方法
        //如果需要在父类指向子类对象,创建的实例对象使用父类没有的方法需要强制转换
        ((Man)xm2).in();
    }
}

你可能感兴趣的:(J2E-general,java,开发语言,后端)