java:对象多态详解总结

java:对象多态详解总结

多态概念:

​ 一个事物,在不同时刻呈现不同的状态。

多态前提:

  1. 类之间存在继承关系
  2. 类方法拥有重写
  3. 父类引用指向子类对象(向上转型)

向上转型格式:

父类名 对象名=new 子类名();

向下转型格式:

前提:已经向上转型

子类名 对象名 = (子类名) 父类对象名;

多态访问特点:

访问内容 特点
成员变量 编译看左,运行看左
成员方法 编译看左,运行看右
静态成员方法 编译看左,运行看右(静态不算方法,类相关)

多态优点:

  1. 提高代码的复用性(由继承保证);
  2. 提高代码的拓展性(由多态保证);

多态弊端:

不能访问子类特有功能 解决方式:向下转型;

多态案例:

父类动物类

//父类动物类Animal
public class Animal {
		String name;
		//构造函数
		public Animal() {
		super();
		}
		public Animal(String name) {
			super();
			this.name = name;
		}
		//成员方法
		public void eat() {
			System.out.println(this.name+"在吃饭");
		}
		public void sleep() {
			System.out.println(this.name+"在睡觉");
		}	
}

动物类子类Cat类

//动物类 子类Cat类
public class Cat extends Animal {
	public Cat(String name) {
		super(name);
	}
	public void play() {
		System.out.println(this.name+"在玩毛球");
	}
}

动物类子类Dog类

//动物类 子类Dog类
public class Dog extends Animal {
	public Dog(String name) {
		super(name);
	}
	public void lookdoor() {
		System.out.println(this.name+"在看大门");
	}
		
}

动物类工具类

//动物类工具类
public class AnimalTool {
		private AnimalTool() {
			super();
		}
			public  static void useAnimal(Animal animal) {
				animal.eat();
				animal.sleep();
			}
}

测试类

//测试类
public class Test {
	public static void main(String[] args) {
			Animal dog=new Dog("汪汪");//Dog类向上转型
			Animal cat=new Cat("多多");//Cat类向上转型
			AnimalTool.useAnimal(dog);//调用工具类 展示Dog类的行为
			AnimalTool.useAnimal(cat);//调用工具类 展示cat类的行为
			System.out.println("======================================");
			Dog wang=(Dog) dog;//动物类向下转型 
			Cat duo=(Cat) cat;//动物类向下转型 
			wang.lookdoor();//展示Dog类的特有方法
			duo.play();//展示Cat类的特有方法
	}
}

运行结果:

汪汪在吃饭
汪汪在睡觉
多多在吃饭
多多在睡觉
======================================
汪汪在看大门
多多在玩毛球

你可能感兴趣的:(JAVASE小知识)