java多态

多态是具有表现多种形态的能力的特征;

  更专业的说法:同一个实现接口,使用不同的实例而执行不同的操作;

  比如打印机,分为彩色打印机和黑白打印机,彩色打印机点击打印按钮打印的是彩色的图纸,黑白打印机点击打印按钮打印的是黑白的图纸;打印机可以看做是父类,黑白,和彩色的打印机可以看做是子类,两个子类都对父类的打印方法进行了重写;

子类到父类的转换(向上转型)

//讲int型常量或变量的值赋给double型变量,可以自动进行类型转换

int i=5;

double d1=5;

//将double型常量或变量的值赋给int型变量,进行强制类型转换

double d2=3.14;

int a=(int)d2;

public class Master{
    private String name="";
    private int money=0;
    public Master (String name,int money){
this.name=name;
        this.money=money;
    }
    public void feed(Pet pet){
       pet.eat();      
    }
    public void feed(Dog dog){
        dog.eat();
    }
    public void feed(Penguin pgn){
        pgn.eat();
    }

使用父类作为方法返回值实现多态

public class Master{
    private String name="";
    private int money=0;
    public pet getpet(int typeId){
    pet pet=null;
    if(typeid==1){
        pet=new Dog("欧欧","雪耐瑞");
        }else if(typeId==2){
        pet=new penguin("楠楠","Q妹");
        }
        return pet;
      }  
  }  
} 

父类到子类的转换(向下转型)

当向上转型发生后,将无法调用子类特有的方法;但是当需要调用子类特有的方法时,可以通过将父类再转为子类实现;

public class a {
    public static void main(String[] args) {
        Pet pet=new Dog("欧欧","雪纳瑞");
        pet.eat();
        Dog dog=(Dog)pet;
        dog.catchingFlyDisc();
        Penguin pgn=(Penguin) Pet;
        pgn.swimming()
    }

}

instanceof运算符

 语法 对象instanceof类或者接口

  该运算符来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false;在强制类型转换之前通过instanceof运算符检查对象的真实类型,在进行相应的强制类型转换,这样就可以避免类型转换异常,从而提高代码的健壮性;

 

posted @ 2016-10-15 17:27  大头杀马特  阅读(182)  评论(0)    收藏  举报