您的位置:首页 > 编程语言 > Java开发

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

2018-03-29 23:11 495 查看
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("打针......");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐