java动物类问题_java笔记--动物:具体猫和狗以多态方式写出

动物:猫和狗;

1 在动物中类的下面写上 动物具有的两个属性, 1 名 2 重量;

2 一个空的构造方法是必须紧跟其后的.再来一个构造方法,里面继承父类和继承本类;

3 再把private的几个属性给get和set权限,使他们可以按方式调用和修改;

1 packagecom.q1.q11;2

3 public classAnimial {4 privateString aname;5 private doubleweight;6 publicAnimial() {7 }8

9 public Animial(String aname, doubleweight) {10 super();11 this.aname =aname;12 this.weight =weight;13 }14

15 public voidDy() {16 System.out.println("这个动物的名字是:" +aname);17 System.out.println("这个动物的体重是:" +weight);18 }19

20 //get set

21 publicString getAname() {22 returnaname;23 }24

25 public voidsetAname(String aname) {26 this.aname =aname;27 }28

29 public doublegetWeight() {30 returnweight;31 }32

33 public void setWeight(doubleweight) {34 this.weight =weight;35 }36

4  //我们要再建这个动物的具体类,再造一个cat and dog; 在新建的类中的超类(Superclass)这里,写上包的地址和

要继承的那个animal的类名:形式如com.q1.q11.Animial    点击确定直接建类

4.1在 Cat 和Dog类下面 都可以再另写成员变量.  写上构造方法,空的和赋值的.再写一个一般方法打印出我们给的这几个属性.

别忘了给这个类里新定义的成员变量给一个set 和get.

1 packagecom.q1.q11;2

3 public class Cat extendsAnimial {4 //类里面也有成员变量,下面写构造方法

5 privateString size;6 publicCat () {7 }8 public Cat (String aname, doubleweight, String size) {9 super(aname,weight);10 this.size =size;11 }12 public voidDy() {13 System.out.println("this猫的名字是:" + super.getAname());14 System.out.println("这只猫的体重是:" + super.getWeight());15 System.out.println("这只猫咪的型号是:" +size);16 }17 //给size 生成get set方法.大小写必须写对

18 publicString getSize() {19 returnsize;20 }21 public voidsetSize(String size) {22 this.size =size;23 }24

25 }

Dog中写的框架也是一样的,如下

1 packagecom.q1.q11;2

3 public class Dog extendsAnimial {4

5 privateString size;6

7 publicDog () {8 }9 public Dog (String aname, doubleweight, String size) {10 super(aname,weight);11 this.size =size;12 }13 public voidDy() {14 System.out.println("狗狗的名字是:" + super.getAname());15 System.out.println("狗狗的体重是:" + super.getWeight());16 System.out.println("这只狗狗的型号是:" +size);17 }18 publicString getSize() {19 returnsize;20 }21 public voidsetSize(String size) {22 this.size =size;23 }24

25

26 }

main方法按下面这样就可以调用出来了,但每次只能调用一个,或者可以把每个子类的调用都写出来.

但 如果动物这个类下面的子类写了好多小动物呢?所以还可以采用多态的方法,

如下下面:

1 packagecom.q1.q11;2

3 public classMain {4

5 public static voidmain(String[] args) {6 Animial ani = new Cat();//父类的引用指向子类对象

7 ani.setAname("可爱滴猫咪");8 ani.setWeight(35);9 //上面这种 点 调用不出来子类里面自己写的属性,10 //只能调用父类的属性,想要调用就强转(如下)

11 ani.Dy();12 Cat cater =(Cat)ani;13 cater.setSize("中型");14 cater.Dy();

}

}

多态方法:

main 中

packagecom.q1.q11;public classMain {public static voidmain(String[] args) {

Cat cater= new Cat ("可爱猫咪",40,"中小型");

Dog doger= new Dog("帅气的犬",50,"中型");

Test t= newTest();

t.DIX(doger);

t.DIX(cater);

}

}

再新建的一个Test中写:

1 packagecom.q1.q11;2

3 public classTest {4

5 public voidDIX( Animial ani) {6 if(ani instanceofCat) {7 Cat kk = (Cat)ani; //如果传过来的动物的某个对象是猫类,就把它强转为猫这个类;

8 kk.Dy();9 }else if(ani instanceofDog) {10 Dog dd = (Dog)ani; //如果传过来的动物的某个对象是狗类,就把它强转为狗这个类;

11 dd.Dy();12 }else{13 ani.Dy(); //其他的则调用动物这个对象本身的方法来显示

14 }15

16 }17 }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值