Bootstrap

初学Java---面向对象编程-多态学习


Unit11 多态 部分学习笔记


一、什么是多态?

  • 答:多态(OOP三大特征之一):
    • 一个对象表现出多种形态。
    • 编程角度看:子类对象被声明为父类类型。

二、多态发生的条件:有继承关系或实现关系。

  • 多态的分类:
    • 1.继承类
    • 2.实现接口
1.继承(类)关系:
public class Person { 
	String name;
}
class Student extends Person { 
	int age; 
	public static void main(String[] args) {
		/*没有多态*/
		Person p = new Person();
		/*多态:子类对象被声明为父类类型 */ 
		Person zhangsan = new Student();
		Person lisi = new Student();
		/*类比*/
		double grade = 98;
	}
}
2.实现关系(接口):
interface IPerson {
	public void speak();
}
class Worker implements IPerson{
	@Override
	public void speak() { 
		System.out.println("hello");
	} 
	public static void main(String[] args) {
		IPerson wangwuIPerson = new Worker();
	}

三、为什么使用多态?

  • 1.增强方法的适用性
  • 2.有利于方法的重用
  • 3.软件的扩展。

四、发生多态最多的是:

  • 1.方法传参
  • 2.变量赋值

五、instanceof的作用是什么?

  • 1.Java中的关键字
  • 2.判断对象的类型,返回值是布尔类型(true or false)
  • 3.instance:实例,其实就是对象,创建对象也叫实例化。

六、虚方法调用:

  • 1.虚方法调用:与方法重写有关
  • 2.多态情况下:如果子类重写了父类的方法,方法的调用以子类为准。
public class Animal {
	public void bark() {
		System.out.println("~~~~");
	}
}
class Dog extends Animal {
	public void bark() {
		System.out.println("wangwang~~~");
	}
	public static void main(String[] args) {
		Animal animal = new Animal();
		animal.bark();
		
		Dog erha = new Dog();
		erha.bark();
		//子类对象被声明为父类类型
		Animal dongwu = new Dog();
		//面试题:输出什么?wangwang~~~
		dongwu.bark();
	}
}

;