java新手笔记15 多态

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();

	}

}
时间: 2024-10-23 21:35:30

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

Java学习笔记4——多态

多态 1.引用多态:1)父类的引用可以指向本类的对象:2)父类的引用可以指向子类的对象 public static void main(String[] args) {         Animal obj1 = new Animal(); //父类的对象指向本类         Animal obj2 = new Dog(); //父类的引用可以指向子类的对象         //Dog obj3 = new Animal(); 不可以使用子类的引用指向父类  } 2.方法多态   1)创建本

阿花宝宝 Java基础笔记 之 多态

多态 父类类型 父类引用=new 子类类型():多态三要素 1 继承关系 2 要有方法重写     子类没有重写父类方法时,子类对象调用的是父类的方法    父类没有方法时,无法使用父类对象去调用   编译不通过     编译时,看写的对象是什么类型,就访问什么类型    运行时,会根据传进来的真实类型来调用相应方法   jvm动态绑定机制,根据运行时的真实类型去调用相应方法 3 父类引用指向子类对象 抽象方法 1.抽象方法没有具体实现  访问修饰符abstract 返回类型 方法名(): 2.

Java学习笔记之多态

1.父类型的引用可以指向子类型的对象: Parent p = new Child(); 2.当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误:如果有,再去调用子类的该同名方法. 3.静态static方法属于特殊情况,静态方法只能继承,不能重写Override,如果子类中定义了同名同形式的静态方法,它对父类方法只起到隐藏的作用.调用的时候用谁的引用,则调用谁的版本. 4.使用多态,只能使用重写父类的方法,若方法只在父类定义而没有重写,调用的是父类的方法. 5.如果想要调用

java新手笔记2

1.注释 /** doc注释 * 类说明信息 */ //声明类 文件名与类名一致 public class World {//类定界符 //声明方法 main方法 public static void main(String[] args) { System.out.println("World World!"); //System.out.println("welcome java world!"); //注释的代码不执行 单行注释 /* 多行注释 System.

java新手笔记23 异常

1.import package com.yfs.javase; import java.util.Scanner; //import java.lang.String;//默认导入 public class Demo1 { public static void main(String[] args) { String s = new String("abc");//java.lang.String String s1 = "abc"; System.out.pri

java新手笔记19 抽象类

1.Shap package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 //计算面积方法 public double getArea() {//代码完全没用 System.out.println("计算面积"); return 0; } } 2.Circle package com.yfs.javase; public class Circle extends Sh

java新手笔记33 多线程、客户端、服务器

1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = false; //跳出方法 同步锁 public synchronized void jump() { while(true) { if(!isLive ) { System.out.println("跳出第 " + index + " 田鼠"); //修改田鼠状态

java新手笔记34 连接数据库

1.JdbcUtil package com.yfs.javase.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcUtil { private static final String driver = "sun.j

我的java学习笔记(15)关于接口

1.接口技术主要用来描述具有什么功能,而并不给出每个功能的具体实现. 2.一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象. 3.在java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类的需求要遵从接口描述的统一格式进行定义. 4.接口中的所有方法自动的属于public. 5.接口决不能含有实例域,也不能在接口中实现方法. 6.提供实例域和方法实现的任务应该由实现接口的那个类来完成. 7.可以将接口看成是没有实例域的抽象类.但是这两个概念还是有区别的.