24、Java面向对象——多态、多态的使用、多态中的转型、instanceof运算符

目录 

课前先导

一、多态

1、定义

2、多态的前提和体现 

3、多态中成员访问特点 

二、多态的使用 

1、代码演示

2、多态的优缺点 

三、多态中的转型

1、向上转型

2、向下转型

 四、instanceof运算符

1、instanceof运算符的作用 

​编辑 2、instanceof运算符使用注意事项

3、instanceof运算符效果展现

五、多态的特点(优势)


课前先导

难点来了,多态,多少英雄豪杰都倒在了多态上。我认为他们应该是倒在定义上了,应该都是被定义搞晕了,我们这篇博文也会有很多定义,大家刚开始学,看一眼图一乐就行了,等把多态该清楚了,再去看那些定义。提示一下:多看带颜色的字。

一、多态

1、定义

(1)同一个对象,在不同时刻表现出来的不同形态

比如说,猫是猫,猫是动物,猫是猫科动物,猫是家养动物

就相当于  猫 = 猫   动物 = 猫   猫科动物 = 猫   家养动物 = 猫 (赋值符号 = 是从右往左读的)

(2)计算机程序运行时,相同的消息可能会发送给多个不同的类别之对象 ,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。

父类可能被很多个子类去继承,父类中的方法在子类中会有不同的形态(方法重写) ,我们看到的运行效果是子类的,不过,方法是父类发出的(父类中要有,就是子类和父类共有的方法)。

(3) 多态意味着在一次方法调用中根据包含的对象的实际类型(即实际的子类对象)来决定应该调用哪个方法,而不是由用来存储对象引用的变量的类型决定的。

比如我们平常创建对象 Cat  c  =  new  Cat();调用方法 c.show();我们看的是不是变量c是哪个类的,然后看Cat类继承的方法和它自己独有的方法;多态中看的是父类的方法在子类中的实例(父类和子类都有的方法) 

2、多态的前提和体现 

(1)有继承/实现关系;

(2)有方法重写;

(3)有父类引用指向子类对象。

要使用多态,这三个条件一定要有。我们看一下什么是父类引用指向子类对象: 

我们平常创建对象:Cat  c  =  new  Cat();   Cat  c  :Cat类型的变量c; new  Cat() :创建Cat类的对象。

多态中的创建对象:父类的引用指向子类的对象:Animal  c  =  new  Cat();   Animal  c :父类Animal类型的变量c; new  Cat() :创建子类Cat的对象。

3、多态中成员访问特点 

我们用代码展示

父类Animal

public class Animal {
	
	public String name = "动物";
	
	public void eat(){
		System.out.println("可爱不能当饭吃");
	}

}

子类Cat

public class Cat extends Animal{
	
	public String name = "猫";
	public int age = 2;
	
	public void action(){
		System.out.println("猫会爬树");
	}

	@Override //方法重写
	public void eat() {
		System.out.println("猫吃鱼");
	}
	
}

测试类及运行结果

 通过对象调用age时报错了,因为父类中没有变量age

 通过上面的代码可以看到,我们通过对象调用变量,调用的是父类的变量

下面我们调用方法

调用action()方法报错了,因为action()方法是子类Cat类特有的方法,父类没有 

public class Test {
	public static void main(String[] args) {
		//多态
		Animal cat = new Cat();
		
		System.out.println(cat.name);
		
		cat.eat();
		
	}

}

调用方法,程序执行的是父类中的方法 

多态的成员访问特点:

成员变量:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值