抽象的Animal 类
创新互联专业IDC数据服务器托管提供商,专业提供成都服务器托管,服务器租用,德阳机房服务器托管,德阳机房服务器托管,成都多线服务器托管等服务器托管服务。
public abstract class Animal {
public abstract void sound();
}
CanFly接口
public interface CanFly {
public void fly();
}
Bird类继承自Animal类,并有属性表示鸟类年龄。并实现父类中的sound方法
使鸟类实现接口Canfly,并实现其中的fly方法,在方法中向控制台打印输出:鸟在飞。。。
public class Bird extends Animal implements CanFly {
private int age;
@Override
public void sound() {
// TODO Auto-generated method stub
System.out.println("bird sound");
}
public void fly() {
// TODO Auto-generated method stub
System.out.println("鸟在飞。。。 ");
}
}
编写飞机类Plane,使飞机类实现接口Canfly,并实现其中的fly方法,在方法中向控制台打印输出:飞机在飞。。。
public class Plane implements CanFly {
public void fly() {
// TODO Auto-generated method stub
System.out.println("飞机在飞。。。 ");
}
}
编写测试类,测试类中有main方法,还有letFly方法,打印输出什么事物在飞方法头部为:public static void letFly(Canfly c)
还有letSound方法,打印输出什么动物在叫,在方法中要判断,这个对象是否是动物,如果是动物才让叫。方法头部为:public static void letSound(Animal a)
在main方法中创建鸟对象和飞机对象,在分别调用letFly和letSound方
public class Test {
public static void letFly(CanFly c)
{
c.fly();
}
public static void letSound(Animal a)
{
a.sound();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Bird b=new Bird();
Test.letFly(b);
Test.letSound(b);
Plane p=new Plane();
Test.letFly(p);
// Test.letSound(p);//飞机没有继承自Animal类所以不能调用该方法
}
}
以上全部按照你要求写的
public class Animal
{
public String name;
public int legs;
public String sound;
public Animal(String name, int legs, String sound){
this.name = name;
this.legs = legs;
this.sound = sound;
}
public String toString(){
return name + "\t" + legs + "\t" + sound;
}
public static void main(String[]args)
{
//init
Animal[] animals = new Animal[3];
animals[0] = new Animal("加菲猫",4, "喵喵喵");
animals[1] = new Animal("唐小鸭",2, "嘎嘎嘎");
animals[2] = new Animal("海豚奇奇",0, "海豚音");
byte[] b = new byte[1024];
String[] names = {"猫", "鸭子", "海豚"};
int[] legs = {4,2,0};
String name;
int leg;
String sound;
while(true){
try{
System.out.println("动物名称\t腿的条数\t动物叫");
for (int i = 0; i animals.length; i++) {
System.out.println(animals[i].toString());
}
System.out.println("0-修改,其他数字-退出");
int n = System.in.read(b);
String s = new String(b,0,n);
int oper = Integer.parseInt(s.trim());
if (oper != 0) {
System.out.println("退出!");
return;
}
for (int i = 0; i animals.length; i++) {
System.out.println("请输入"+names[i]+"的名字");
n = System.in.read(b);
s = new String(b,0,n);
name = s.trim();
if (name.length() == 0) {
throw new Exception(names[i]+"必须有名字");
}
System.out.println("请输入"+names[i]+"的腿数");
n = System.in.read(b);
s = new String(b,0,n);
leg = Integer.parseInt(s.trim());
if (leg != legs[i]) {
throw new Exception(names[i]+"必须有"+legs[i]+"条腿");
}
System.out.println("请输入"+names[i]+"的叫声");
n = System.in.read(b);
s = new String(b,0,n);
sound = s.trim();
if (sound.length() == 0) {
throw new Exception(names[i]+"必须有声音");
}
animals[i].name = name;
animals[i].legs = leg;
animals[i].sound = sound;
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
凑合写的....
instanceof 不难吧...就是验证类是否为类或者父类的实例...
我看你ppt要求的是自定义异常抛出,接口继承应该很简单,抛出异常参考我的代码即可..
/**
* Animal.java
*/
package animal;
public class Animal {
private String name; //名称
private int bodySize; //大小
private float weight; //体重
public Animal (String name, int bodySize, float weight) {
this.name = name;
this.bodySize = bodySize;
this.weight = weight;
}
public void run () { //跑
System.out.println("I'm running!");
}
public void jump () { //跳
System.out.println("I'm jumping!");
}
public void walk () { //走
System.out.println("I'm walking!");
}
public String getName () {
return name;
}
public int getBodySize () {
return bodySize;
}
public int getWeight () {
return weight;
}
public String toString () {
return ("I'm a " + name +
", my body size is " + bodySize +
", and my weight is " + weight + ".");
}
}
/**
* 这是一个测试类: TestAnimal.java
*/
package animal;
public class TestAnimal {
public static void main (String args[]) {
Animal ani = new Animal("tiger", 5, 10.5);
System.out.println(ani.toString());
ani.run();
ani.jump();
ani.walk();
}
}
------------------------------------
输出:
I'm a tiger, my body size is 5, my weight is 10.5.
I'm running!
I'm jumping!
I'm walking!
------------------------------------
不会测试就不测试呗,我输出都帮你写出来了。
------------------------------------
测试结果就是上面的内容。把以上两个程序保存成 Animal.java 和 TestAnimal.java。放入一个新建名为 animal 的文件夹。比如路径是 C:\animal\,运行 cmd,输入:cd\ 回车,
再输入:C: 回车,
然后输入:javac animal\Animal.java animal\TestAnimal.java 回车,
如果没有什么错误提示,再输入:java animal.TestAnimal 回车。
---------------就可以了!
//创建一个AnimalSound数组,容量为3
AnimalSound[] animal = new AnimalSound[3]
//在数组中分别放入Cat、Dog、Duck三个对象
animal[0] = new Cat();
animal[1] = new Dog();
animal[2] = new Duck();
//循环遍历AnimalSound数组,这是for each的循环,跟下面的代码有相同的效果
// for(int i=0;ianimal.size();i++){
// animal[i].sound();
//}
for(AnimalSound obj: animal){
//调用三个对象的sound()方法
obj.sound();
}
程序的意思应该是表达继承的关系,三个动物继承了动物声音这个父类,所以它们都具有了发出声音的功能。 main方法中,用数组放了三个动物的实例,然后循环,让它们分别发出声音。