三、多态

 

  • 一、掌握多态的优势和应用场合

软件开发有一个标准的规范流程:开闭原则。对扩展开放,对修改关闭。

频繁修改代码,代码可扩展性、可维护性差,使用多态优化设计

任何一个对象都会有类型,当等号两侧变量的类型和对象类型不一致时,就有可能产生多态现象了

多态用文字来解释就是:父类的引用变量直接指向子类对象

多态应用的两种情况:

  1. 有继承关系
  2. 实现接口(将接口看做实现类的父类,实现就是变相的继承)

使用多态的原因:为了达到程序的灵活性,才使用了多态技术

//一个对象有多种表现形态就叫多态

Dog d = new Dog();

Pet p = new Dog();

多态技术是面向对象的核心

多态重点指对象,与简单数据类型没有关系

  1. 多态—就是指对象在程序中表现的多种形态
  2. Java中,对象变量是多态的。
    1. 多态产生的条件:只有出现继承或实现某个接口时才会产生多态
    2. 一个类型为Person的变量既可以指向类型为Person的对象,又可以指向Person的任何子类的对象 (例如:同样是人,英国人说英语,中国人说汉语)
  3. 以多态的形式来传递参数,增强了参数类型的灵活性
  4. 一个对象只能有一种确切的数据类型
  5. 一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法。

 实现多态的两个要素: 1. 方法重写 2. 使用父类类型

多态的好处:提高程序的灵活性,提高程序后期的可维护性

  • 二、掌握父类和子类之间的类型转换
Person p = new Student();//多态使用

Student s = (Student)p;//强制转换
  • 三、掌握instanceof运算符的使用

对象 instanceof 类或接口

  1. 该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false
  2. 在强制类型转换之前通过instanceof运算符检查对象的真实类型,可以避免类型转换异常,从而提高代码健壮性
  3. 使用运算符instanceof可以得到对象的类型
  4. instanceof只是判断对象是否是某种类型,不能判断对象的实际类型。(多态环境下)    
  5. 对象的实际类型获取方法:对象.getClass()
  • 四、使用父类作为方法形参实现多态
class Person {
	String name;
	int age;

	public void eat() {
		System.out.println("person eating with mouth");
	}

	public void sleep() {
		System.out.println("sleeping in night");
	}
}

class Chinese extends Person {
	public void eat() {
		System.out.println("Chinese eating rice with mouth by chopsticks");
	}

	public void shadowBoxing() {// 练习太极拳
		System.out.println("practice dashadowBoxing every morning ");
	}
}

class English extends Person {
	public void eat() {
		System.out.println("English eating meat with mouth by knife");
	}
}

class TestEat{
	public static void main(String[] args) {
		showEat(new Person());
		showEat(new Chinese());
		showEat(new English());
	}

	public static void showEat(Person person) {
		person.eat();
	}
	// public static void showEat(Chinese chinese) {
	// chinese.eat();
	// }
	// public static void showEat(English english) {
	// english.eat();
	// }
}
  • 重写与重载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值