java基础笔记(十一)多态

概念:

同一个对象,在不同时刻体现出不同的状态

举例:

猫是猫。猫是动物

Animal cat1 = new Cat();

多态前提:

  1. 要有继承关系
  2. 要有方法重写(多态的体现)
  3. 要有父类引用指向子类 Animal cat1 = new Cat();

多态优缺点处

  • 提高代码维护性
  • 提高了代码的扩展性
  • 不能访问子类特有功能

如果想要使用子类特有功能:

		Animal cat4 = new Cat();
		Cat cat5 = (Cat) cat4;
		cat5.show3();  //访问子类特有功能
		cat5.show1();//访问子类静态方法
		cat4.show1();//访问父类静态方法

多态中成员访问特点:

Animal cat1 = new Cat();

Animal 为左边; Cat()为右边

  1. 成员变量:编译运行看左边
  2. 构造方法:创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化
  3. 成员方法:编译看左边,运行看右边(方法重写)
  4. 静态方法:编译运行看左边 (静态方法和类相关,不算方法重写,所以运行也会显示父类方法)

举例:

//父类
public class Animal {
    String a = "动物的成员变量";
	public void show(){
		System.out.println("父类的show");
	}
	public static void show1(){
		System.out.println("父类的静态show");
	}
}
//子类:
public class Cat extends Animal{
    String a = "猫的成员变量";
	public void show(){
		System.out.println("子类的show");
	}
	public static void show1(){
		System.out.println("子类的静态show");
	}
}
//测试:
public class ExtendsDemo4 {

	public static void main(String[] args) {
		//多态访问成员方法:
		Animal cat3 = new Cat();
		System.out.println(cat3.a);//编译使用的是动物(父类)的show,运行结果显示是动物(父类)的show
		cat3.show();  //编译使用的是动物(父类)的show,但运行结果显示是猫(子类)的show
		cat3.show1(); //访问静态方法
	}
}
//显示:
动物的成员变量
子类的show
父类的静态show

猜你喜欢

转载自blog.csdn.net/CrankyST/article/details/83857159
今日推荐