Java 面向对象:this使用、类型转换、抽象abstract

package com.neusoft.override;

/**
 * this:当前对象自身 用法: 1. this.属性名 2. this.方法名 3. this()表示调用当前类的构造器
 * 注意:只能写一次,并且要写在方法的第一行
 *
 * 基本数据类型:自动类型转换\强制类型转换 引用类型(有继承关系):自动类型转换 (向上造型:将小类型赋值给大类型)\
 * 强制类型转换(向下造型:将大类型赋值给小的类型)
 *
 */
public class Master {

	public void cure(Pet p) {// new Dog
		if (p instanceof Dog) {
			Dog dog = (Dog) p;// 强转Pet-->Dog
			dog.play();
		}
		if (p.getHealth() < 50) {
			p.toHospital();
		}
		System.out.println(p.getName()+"--"+p.getLove()+"---"+p.getHealth());
	}

	public static void main(String[] args) {
		Master master = new Master();
		Dog dog = new Dog();

		Pet pet = new Dog();

		master.cure(dog);
		// play ball.........
		// null--0---55默认构造器中有效

		Penguin p = new Penguin();
		master.cure(p);
		// 打针...... 
		// null--0---0play中初始值无效
		

		pet = new Penguin();
		p.play();
		master.cure(pet);// 输出 penguin 信息
		//play doudou.........
		//打针......
		//null--0---0

		dog.setName("tom");
		dog.setHealth(20);//main中赋值为最终值
		dog.setLove(100);
		master.cure(dog);

		p.setName("jazz");
		p.setHealth(30);
		p.setLove(100);
		master.cure(p);
	}
}
package com.neusoft.override;

public abstract class Pet {
	private String name;
	private int love;
	private int health ;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getLove() {
		return love;
	}

	public void setLove(int love) {
		this.love = love;
	}

	public int getHealth() {
		return health;
	}

	public void setHealth(int health) {
		this.health = health;
	}
	/**
	 * abstract抽象的,抽象方法只有声明,没有实现
	 * 如果在一个类中包含一个或多个抽象方法,那么这个类也要是抽象类
	 */
	public abstract void toHospital();
}
package com.neusoft.override;

public class Dog extends Pet {
	
	public Dog() {
		this.setHealth(55);//构造器中设置初始值,初始化就有效
	}
	public void play(){
		System.out.println("play ball.........");
	}

	@Override//执行父类中的抽象方法
	public void toHospital() {
		System.out.println("吃药......");
	}

}
package com.neusoft.override;



public class Penguin extends Pet {

	

	public void play(){

		this.setHealth(23);//如不执行此行,则初始值无效,执行则局部有效

		System.out.println("play doudou.........");

	}

	

	@Override

	public void toHospital() {

		System.out.println("打针......");
	}
}



你可能感兴趣的:(JavaDemo)