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 类

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值