例
动物:猫和狗;
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 }