JAVA多态的功能、简介及用法示例说明

戚薇 Java教程 发布时间:2023-06-17 16:20:58 阅读数:9401 1
下文笔者将讲述java多态的功能及多态的概念说明和用法,如下所示

Java多态的功能

 1.提高代码的维护性(通过继承和实现来保证)
 2.提高代码的扩展性(通过多态来保证)
 3.降低代码耦合度 

多态的概念说明

多态:
   其字面意思指不同的形态
   一个变量的同一行为可表现出不同的逻辑
     如: 
	   定义一个变量对象,他的play方法运行的逻辑表现出不同的形态
	   (有时候,运行父类的play方法
	    有时候,运行的是子类的play方法)

多态的实现条件:
    继承和具体的实现关系

多态的定义格式
   父类类型/接口类型  变量名 = new  子类/实现类();

多态的示例

public class Animal {
    public String name = "animal";

	@Override
    public void eat(){
        System.out.println("动物吃东西!");
    }
}

public class Tiger extends Animal {
    public String name = "tiger";

    @Override
    public void eat() {
        System.out.println("虎吃鸡!");
    }
    
    public void run() {
		System.out.println("虎奔跑!");
	}
}

public class Snake extends Animal {
    public String name = "snake";
    
    @Override
    public void eat() {
        System.out.println("蛇吞象!");
    }

	public void run() {
		System.out.println("蛇爬行!");
	}
}

多态效果的展示

 Animal tiger = new Tiger(); 
 System.out.println("name = " + tiger.name); 
 
 // name 是Animal中的值,编译期只能取到父中的值
 
 Animal snake = new Snake();
System.out.println(sanke.eat()); 
// snake 的门面类型是 Animal,

多态类型转换及instanceof关键字应用

多态的类型转换分为:
  向上转型和向下转型

向上转型:
   多态本身就是向上转型过的过程
   如:
   父类类型 变量名=new 子类类型();
当无需使用子类类型时,提高扩展性,我们可使用向上转换
 
 Amimal tiger = new Tiger();
        tiger.run(); //此时运行会,因为编译检查tiger是Animal类型,Animal中没有run方法。
      
	  //向下转型才能运行正确
        ((Snake)tiger).run(); // 此时编译检查能通过,但是运行时会报错,因为tiger实际类型是Tiger类型,
        此时强制类型转换成Snake 
		 编译时检测tiger是Animal类型
         Snake也是Animal的子类,所以
        编译时无法发现老虎不能转化为蛇类型。
    // 此时 需使用 instanceof进行类型判断
	if (tiger instanceof Tiger) {
		((Tiger) tiger).run() // 此时经过instanceof判断后才能进行强制类型转换,编译和运行时均能通过。
	}
    从以上的代码上,我们可以得出instanceof用于类型判断 

多态示例

 
public class Keeper {
    public void feed(Animal animal){
        animal.eat();
    }
}

public class Test {
    public static void main(String[] args) {
        Keeper GodXiu = new Keeper();

        Animal snake = new Snake();

        Animal tiger = new Tiger();
        GodXiu.feed(snake);
        GodXiu.feed(tiger);
    }
}

多态常见的示例

	list list = new ArrayList();
	Map map = new HashMap();
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202306/6824.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者