1.Animal类

package com.yfs.javase;
public class Animal { public void cry() {
System.out.println("动物叫...");
} }

2.Dog/Cat/Bird类

package com.yfs.javase;

public class Dog extends Animal {
public void cry() {
System.out.println("汪 汪...");
}
} class Cat extends Animal {
public void cry () {
System.out.println("喵 喵...");
}
} class Bird extends Animal {
public void cry () {
System.out.println("嘎 嘎...");
}
}

3.Box类,(集合)

package com.yfs.javase;

public class Box {
// 动物房在哪里 10個動物
// private Dog[] dogs = new Dog[10];
// private Cat[] cats = new Cat[10];
// private Bird[] birds = new Bird[10];
//声明父类数组
private Animal[] animals = new Animal[10];
private int index = 0; // 装动物
public void addAnimal(Animal pet) {
if (index >= 10) {
System.out.println("箱子已满");
return;
}
animals[index] = pet;
index++;
//System.out.println(pet);
}
//
// public void addAnimal(Cat cat) {
// if (index >= 10) {
// System.out.println("箱子已满");
// return;
// }
// cats[index] = cat;
// index++;
// } // 踢箱子
public void kid() { for (int i = 0; i < animals.length; i++) {
animals[i].cry();//执行的是子类的方法 多态 覆盖的方法
}
} }

4.Box测试

package com.yfs.javase;

import java.util.Random;

public class BoxTest {

	public static void main(String[] args) {
Box box = new Box();
// box.addAnimal(new Dog());
// box.addAnimal(new Bird());
// box.addAnimal(new Cat());
Random ran = new Random();
for (int i = 0; i < 15; i++) {
int r = ran.nextInt(101);// 100 65 35
if(r > 65) {
box.addAnimal(new Dog());
} else if( r > 35) {
box.addAnimal(new Cat());
} else {
box.addAnimal(new Bird());
}
} box.kid(); } }

java新手笔记15 多态的更多相关文章

  1. JAVA自学笔记15

    JAVA自学笔记15 @例题1:共有5个学生,请把五个学生的信息存储到数组中,并遍历数组,并获取每个学生的信息 Students[] students=new Student[5]; Student ...

  2. java新手笔记32 jdk5新特性

    1.for package com.yfs.javase; import java.awt.Color; import java.util.Calendar; import java.util.Has ...

  3. java新手笔记26 Frame

    0.Calculater package com.yfs.javase; import java.awt.BorderLayout; import java.awt.Button; import ja ...

  4. java新手笔记25 日期格式化

    1.系统时间 package com.yfs.javase; import java.sql.Time; import java.sql.Timestamp; import java.util.Cal ...

  5. java新手笔记24 Math/String对象

    1.Math package com.yfs.javase; public class MathDemo { public static void main(String[] args) { int ...

  6. java新手笔记23 异常

    1.import package com.yfs.javase; import java.util.Scanner; //import java.lang.String;//默认导入 public c ...

  7. java新手笔记19 抽象类

    1.Shap package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 //计 ...

  8. java新手笔记2 数据类型

    1.注释 /** doc注释 * 类说明信息 */ //声明类 文件名与类名一致 public class World {//类定界符 //声明方法 main方法 public static void ...

  9. Thinking In Java 学习笔记 1-5 章

    第1章 对象导论 本章主要讲OOP的思想及一些OOP基本概念 1.抽象过程:万物都是对象,对象具有状态.行为和标识.对象拥有属性和方法,以及在内存中的唯一地址. 2.每个对象都有一个接口:通过接口给对 ...

随机推荐

  1. codeforce 651B Beautiful Paintings

    题意:后一个比前一个大就加一,问最大次数. #include<cstdio> #include<cstring> #include<algorithm> #incl ...

  2. Azure 虚拟机常见问题-下

    虚拟机上的默认用户名和密码是什么? Azure 提供的映像没有预先配置用户名和密码.使用这些映像中的其中一个创建虚拟机时,你需要提供用户名和密码,用于登录到虚拟机. 提示 如果忘记了用户名或密码且安装 ...

  3. linux中cron用法

    http://blog.chinaunix.net/uid-677314-id-83387.html

  4. 一个free的问题

    请看下面的代码: #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sy ...

  5. 【Java基础】抽象类和抽象方法的总结

    什么是抽象类 抽象类是相同概念实体的一种抽象,Java中用关键字abstract来定义抽象类和抽象方法. 什么是抽象方法 只有方法的声明,没有方法的具体实现的方法. 抽象类和抽象方法的特点 抽象类和抽 ...

  6. CF29D - Ant on the Tree(DFS)

    题目大意 给定一棵树,要求你按给定的叶子节点顺序对整棵树进行遍历,并且恰好经过2*n-1个点,输出任意一条符合要求的路径 题解 每次从叶子节点开始遍历到上一个叶子节点就OK了, 这个就是符合要求的路径 ...

  7. CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理

    简记: CGAffineTransformMake(a,b,c,d,tx,ty) ad缩放bc旋转tx,ty位移,基础的2D矩阵 公式 x=ax+cy+tx    y=bx+dy+ty 1.矩阵的基本 ...

  8. NULL指针 Void* 和野指针

    在C和C++的语言中常常有这几个概念: NULL指针.空指针.Void *指针.野指针(Wild Pointer)甚至垂悬指针(Dangling Pointer). 1.NULL指针,一般用于指向一个 ...

  9. 群赛 ZOJ3741(dp) ZOJ3911(线段树)

    zoj3741 简单dp.wa了两个小时,中间改了好多细节.后来还是不对,参考了别人的代码,发现一个致命问题,初始化的时候,不是每种状态都能直接达到的.初始化成-1. (题目有个小坑,0<=L& ...

  10. URL参数带中文,后台接收乱码解决方案

    1.前台中文参数用encodeURIComponent()进行编码,如: var textName= encodeURIComponent(name); 2.对整个URL用encodeURI()进行编 ...