多态思想并举例
来源:互联网 发布:笑傲江湖 朝代 知乎 编辑:程序博客网 时间:2024/05/21 21:34
/**
*多态:可以理解为事物存在的多种体现形态。
*比如人:男人 女人
* 动物:猫 狗
* 猫 x = new 猫();
* 动物 x = new 猫();
*对象的多态性
*
*1,多态的基本体现
* 代码体现形式: 父类的引用指定自己的子类对象
* 父类的引用也可以引用自己的子类对象
*2,多态的前提
*必须是类与类之间有关系 要么继承 要么实现
* 通常还有一个前提:存在覆盖
*3,多态的好处
*多态的出现大大的提高了程序的扩展性
*
*4,多态的应用
*
*5,弊端:
* 提高了扩展性,但是只能使用父类的引用访问父类的功能中的成员
*6,多态的出现代码的特点(多态的使用的注意事项)
* */
/*
* 动物
* 猫,狗
* */
abstract class Animal{
abstract void eat();//都得吃饭
}
class Cat extends Animal{
public void eat(){ System.out.println("Eat Fish");}public void catchMouse(){ System.out.println("Catch Mouse");}
}
class Dog extends Animal{
@Overridepublic void eat() { // TODO Auto-generated method stub System.out.println("Eat 骨头");}public void kanJia(){ System.out.println("kan 家"); }
}
class Pig extends Animal{
@Overridepublic void eat() { // TODO Auto-generated method stub System.out.println("Eat 饲料");}public void gongDi(){ System.out.println("拱地");}
}
//————————————————-
public class DuoTaiDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat c = new Cat(); c.eat(); Animal e = new Cat();//一个对象具备了多种形态造成的 猫类型也是动物类型 多态在程序中的表现 e.eat(); Animal a = new Cat(); a.eat();//类型提升 从Cat到Animal型 也称为向上转型 //如果想要调用猫的特有方法时 如何操作? ///////Cat c1 = new Cat(); //强制将父类的引用转成子类类型 Cat f = (Cat)a;//强转 向下转型 可强制转换 f.catchMouse(); //function(c); //Dog d = new Dog(); /*千万不要出现以下操作:就是父类对象转化成子类类型 * 我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换 * Animal a = new animal(); * Cat c = (Cat)a; * 多态自始至终都是子类对象在做变化 * */ function(new Cat());//Animal a = new Cat(); function(new Dog());//Animal a = new Dog(); function(new Pig());//Animal a = new Pig(); /*毕姥爷 x = new 毕老师(); * x.讲课();讲的是子类 java * 毕老师 y = (毕老师)x; * y.看电影(); 毕老师自始至终在变在变 * */ function(new Dog());// java.lang.ClassCastException 类型转换异常}public static void function(Animal a){//函数封装 提高函数的扩展性 a.eat(); if(a instanceof Animal){ System.out.println("ahhhhh"); } else if(a instanceof Cat){//instanceof是关键字 判断他是否所属类型 Cat c = (Cat)a; c.catchMouse(); }else if(a instanceof Dog){ Dog c = (Dog)a; c.kanJia(); }}/*public static void function(Cat c){//cat类 c.eat();} public static void function(Dog d){//dog类 d.eat();} public static void function(Pig p){//pig类 p.eat();} */
}
/*基础班的学生:
* 学习 睡觉
*高级班的同学:
* 学习 睡觉
*
*可以将这两类的事物进行抽取
*将对象调用简单化 找共同点在封装类
* */
abstract class Student1{
public abstract void study();
public void sleep(){
System.out.println(“躺着睡”);
}
}
class BaseStudent extends Student1{
public void study(){ System.out.println("基础课程学习");}public void sleep(){ System.out.println("坐着睡");}
}
class AdvStudent extends Student1{
@Overridepublic void study() { // TODO Auto-generated method stub System.out.println("高级课程学习");}
}
class DoStudent{
public void doSome(Student1 stu){
stu.study();
stu.sleep();
}
}
public class DuoTaiDemo1 {
/** * @param args */public static void main(String[] args) { // TODO Auto-generated method stubBaseStudent bs = new BaseStudent(); //bs.study(); //bs.sleep(); //AdvStudent as = new AdvStudent(); //as.study(); //as.sleep();DoStudent ds = new DoStudent(); ds.doSome(new BaseStudent()); ds.doSome(new AdvStudent());}
}
- 多态思想并举例
- java多态举例
- 多态举例
- 多态;多态举例
- Java多态举例
- Javascript中,多态举例
- 多态应用举例2
- 多态和继承举例
- 封装继承多态举例
- 九中算法思想及其应用举例
- 并查集应用举例
- C++多态思想
- 再谈多态--多态的应用举例:
- 多态的定义及举例
- 并查集的应用举例
- 面向对象的思想举例--把大象装进冰箱
- mybaties拦截器设计思想--举例由浅入深分析
- 并查集的思想
- PAT_乙级1009
- [BZOJ1014] [JSOI2008]火星人prefix
- JSP生成验证码
- BestCoder Round #72 (div.2) B.Clarke and points
- POJ 2182 Lost Cows
- 多态思想并举例
- socket编程 -- 大端小端区别及转换
- HDU 5625 Clarke and chemistry(模拟)
- UIScrollView
- TP-LINK 桥接
- Bellman-Ford Algorithm and Dijkstra Algorithm
- Ubuntu 下安装 Nginx ( Nginx + Php5-fpm )
- 基于直方图的图像增强算法(HE、CLAHE、Retinex)之(二)
- cocos2dx Audio声音引擎