java 多态对象 封装方法 再调用 实例:学校有不同班的学生
2016-09-05 13:25
495 查看
为什么 要方法?因为我是个很懒的人~~~嘿嘿
实例题材是:一个学校有不同的班,班里自然是学生咯
我们要做的是:不同的班——有它不同的学习方法和睡觉方法~~~~~~~~~~~我最喜欢睡觉了 嘿嘿
这里我是分三个包 分别为:学生包 、方法包 、运行实现包
学生包
父类
子类
子类
方法包
[b][b]运行包
[/b][/b]
[b][/b]
实例题材是:一个学校有不同的班,班里自然是学生咯
我们要做的是:不同的班——有它不同的学习方法和睡觉方法~~~~~~~~~~~我最喜欢睡觉了 嘿嘿
这里我是分三个包 分别为:学生包 、方法包 、运行实现包
学生包
父类
package com.changgeng.student; public abstract class Student { //定义一个私有的属性 private String name = ""; //抽象学习方法 public abstract void study(); //睡觉方法 public void sleep(){ System.out.println("睡觉"); } //给私有的赋传出去 public String getName() { return name; } //给私有的赋值 public void setName(String name) { this.name = name; } }
子类
package com.changgeng.student; public class Beginner extends Student { { setName("java基础班"); } //重写父类学习抽象方法 @Override public void study() { System.out.println(getName()+"学习方法就是:多敲代码"); } //重写睡觉方法 @Override public void sleep() { System.out.print(getName()+"躺卧 "); super.sleep(); } //子类特有的方法 public void write() { System.out.println(getName()+"敲代码"); } }
子类
package com.changgeng.student; public class Advanced extends Student { { setName("java 高编"); } //重写父类抽象学习方法 @Override public void study() { System.out.println(getName()+"学习方法是:多写实例"); } //重写睡觉方法 @Override public void sleep() { System.out.print(getName()+"做着 "); super.sleep(); } //子类特有的方法 public void write2() { System.out.println(getName()+"写工程"); } }
方法包
package wayStudent; import com.changgeng.student.Advanced; import com.changgeng.student.Beginner; import com.changgeng.student.Student; public class WayStudent { //学生共同的方法 public void study(Student way){ //学习方法 way.study(); //睡觉方法 way.sleep(); } //子类特有的方法 public void write(Student wei){ if (wei instanceof Advanced) { Advanced a = (Advanced)wei; a.write2(); }else if (wei instanceof Beginner) { Beginner b = (Beginner)wei; b.write(); } } }
[b][b]运行包
[/b][/b]
[b][/b]
package demo; import com.changgeng.student.Advanced; import com.changgeng.student.Beginner; import wayStudent.WayStudent; public class Demo { public static void main(String[] args) { //这里只要实例化一个方法类就可以 调用学生包里所有的对象 WayStudent mStudent = new WayStudent(); //高编班 mStudent.study(new Advanced()); mStudent.write(new Advanced()); //基础班 mStudent.study(new Beginner()); mStudent.write(new Beginner()); } }
相关文章推荐
- Java(标准输入/输出流)
- [Java]一、Java开发基本步骤
- Rxjava详解
- java的异常和错误有什么区别。
- java基础算法50题
- Java String 字符串
- eclipse配置jdk和jre
- Java四种代码块
- Java数据类型转换
- Atitit.java expression fsm 表达式分词fsm引擎
- Atitit.java expression fsm 表达式分词fsm引擎
- Atitit.java expression fsm 表达式分词fsm引擎
- java学习日记_20:面向对象之this关键词的概述和。07.08
- JavaSE学习_07_final_duotai_super_typeConvert
- Spring Boot 添加JSP支持【转】
- Q13--树的子结构
- JNI字段描述符“([Ljava/lang/String;)V”
- 为什么JavaByte类型的取值范围是-128~127
- 关于spring-boot 同时支持jsp和freemarke的问题
- 简谈java中的阻塞非阻塞与同步异步