栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java面向对象(多态)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java面向对象(多态)

多态简介

        多态是同一个行为具有多个不同表现形式或形态能力

        多态就是同一个接口,使用不同的实例而执行不同的操作

        同一个时间发生在不同的对象会产生不同的效果

多态的优点

                消除类型之间的耦合关系

        可替换性

        可扩充性

        接口性

        灵活性

        简化性

多态实现方式

        继承

        重写

        父类型引用指向子类对象

多态示例
//测试类
public class Polymorphic {
	public static void main(String[]args) {
		Employee eat=new Employee("张三");
		eat.Eat();
		//向下转型(默认)
		abcd breakfast=new Breakfast("张三");
		//向上转型(前提是有一个向下转型的对象)
		//注意:不是任何类都是进行转换的,只能转换为引用的对象,或者他的父类
        Breakfast fast=(Breakfast)breakfast;
		//可是使用运算符instanceof来进行判断是当前类,或者是子类
		if(fast instanceof abcd) {
			System.out.println(fast.getClass().getSimpleName()+"是Breakfast的对象或者子类");
		}
		breakfast.info();
		//最后输出
		//张三正在吃饭
		//Breakfast是Breakfast的对象或者子类
		//我是abc类的说明		
	}
}
//不符合继承的概念只是,用来测试instanceof是否能够判断子类
class abcd{
	String name;
	public abcd() {
		
	}
	public abcd(String name) {
		this.name=name;
	}
	public void Eat() {
		System.out.println(name+"正在吃饭");
	}
	public static void info() {
		System.out.println("我是abc类的说明");
	}
}
//员工类(父类)
class Employee  extends abcd{
	String name;
	public Employee() {
		
	}
	public Employee(String name) {
		this.name=name;
	}
	public void Eat() {
		System.out.println(name+"正在吃饭");
	}
	public static void info() {
		System.out.println("我是员工类的说明");
	}
}
//老师类(子类继承员工类)
class Breakfast extends Employee{
	public Breakfast() {
		
	}
	public Breakfast(String name) {
        //使用super关键字来指定父类的构造方法
		super(name);
	}
    //重写了父类的方法
	public void Eat() {
		System.out.println(name+"正在吃早饭");
	}
	public void exercise() {
		System.out.println(name+"吃完早饭正在跑步");
	}
	public static void info() {
		System.out.println("我是教师类的说明");
	}
	
}
//主任类(子类继承父类员工类)
class lunck extends Employee{
	public void Eat() {
		System.out.println(name+"正在吃午饭");
	}
	public void exercise() {
		System.out.println(name+"吃完午饭正在拉伸");
	}
	public static void info() {
		System.out.println("我是主任类的说明");
	}
}
//学生类(子类继承父类员工类)
class dinner extends Employee{
	public void Eat() {
		System.out.println(name+"正在吃晚饭");
	}
	public void exercise() {
		System.out.println(name+"吃饭晚饭正在跳舞");
	}
	public static void info() {
		System.out.println("我是学生类的说明");
	}
}
多态总结

        使用父类型的引用指向子类的对象

        该引用只能调用父类的方法和属性

        如果子类重写了父类的方法,那么在调用该放那个方法的时候,调用的是子类里面的方法

        变量不能被重写

        多态有两种形式

                向下转型

                        父类型引用子类型的对象

                向上转型

                        就是把父类型引用子类型的对象,转换为子类型引用子类型对象

                示例:(子类型)父类型引用子类型对象

                当向下转型的对象来调用静态方法,首先会执行最高父类当中的静态方法

        运算符

                语法:对象 instanceof 类

                用来判断对象是否是类的实例,或者说是类的子类

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号