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("打针......"); } }
相关文章推荐
- java数组定义与初始化,类型转换,instanceof的使用
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- 第一周第一天([用文档编辑Java并运行] [Java中数据类型的转换][标题的使用] [引用的使用] [代码块的使用] [图片的使用] [JDK] [Eclipse])
- Android中JNI使用详解(4)---Java与C之间数据类型转换
- java 中能否使用 动态加载的类(Class.forName) 来做类型转换?
- Flex与Java使用BlazeDS交互时类型转换错误
- 将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型
- Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符
- java中Static&Final的使用方法,&&&Java中两个主要的抽象Abstract&&Implement
- Java三目运算符boolean?condition1:condition2的使用及类型转换
- java 定时器的使用(Timer) 日期类型 转换
- JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置
- java/android 使用swig编译c/c++ 代码类型转换
- 使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型
- JAVA第二天笔记--eclipse使用/数据类型转换
- java中的abstract(抽象修饰符)使用
- JAVA面试 不使用API情况下,把数字字符串转换成int类型
- java中把字符串类型转换为int型,不允许使用java内置方法,如parseInt等
- Java 中 父类变量访问子类方法 需要使用 类型转换 (instenceof)关键字 /类型判断/