例
动物:猫和狗;
1 在动物中类的下面写上 动物具有的两个属性, 1 名 2 重量;
2 一个空的构造方法是必须紧跟其后的.再来一个构造方法,里面继承父类和继承本类;
3 再把private的几个属性给get和set权限,使他们可以按方式调用和修改;
1 package com.q1.q11; 2 3 public class Animial { 4 private String aname; 5 private double weight; 6 public Animial() { 7 } 8 9 public Animial(String aname, double weight) { 10 super(); 11 this.aname = aname; 12 this.weight = weight; 13 } 14 15 public void Dy() { 16 System.out.println("这个动物的名字是:" + aname); 17 System.out.println("这个动物的体重是:" + weight); 18 } 19 20 //get set 21 public String getAname() { 22 return aname; 23 } 24 25 public void setAname(String aname) { 26 this.aname = aname; 27 } 28 29 public double getWeight() { 30 return weight; 31 } 32 33 public void setWeight(double weight) { 34 this.weight = weight; 35 } 36
4 //我们要再建这个动物的具体类,再造一个cat and dog; 在新建的类中的超类(Superclass)这里,写上包的地址和
要继承的那个animal的类名:形式如com.q1.q11.Animial 点击确定直接建类
4.1在 Cat 和Dog类下面 都可以再另写成员变量. 写上构造方法,空的和赋值的.再写一个一般方法打印出我们给的这几个属性.
别忘了给这个类里新定义的成员变量给一个set 和get.
1 package com.q1.q11; 2 3 public class Cat extends Animial { 4 //类里面也有成员变量,下面写构造方法 5 private String size; 6 public Cat () { 7 } 8 public Cat (String aname, double weight, String size) { 9 super(aname,weight); 10 this.size = size; 11 } 12 public void Dy() { 13 System.out.println("this猫的名字是:" + super.getAname()); 14 System.out.println("这只猫的体重是:" + super.getWeight()); 15 System.out.println("这只猫咪的型号是:" + size); 16 } 17 //给size 生成get set方法.大小写必须写对 18 public String getSize() { 19 return size; 20 } 21 public void setSize(String size) { 22 this.size = size; 23 } 24 25 }
Dog中写的框架也是一样的,如下
1 package com.q1.q11; 2 3 public class Dog extends Animial { 4 5 private String size; 6 7 public Dog () { 8 } 9 public Dog (String aname, double weight, String size) { 10 super(aname,weight); 11 this.size = size; 12 } 13 public void Dy() { 14 System.out.println("狗狗的名字是:" + super.getAname()); 15 System.out.println("狗狗的体重是:" + super.getWeight()); 16 System.out.println("这只狗狗的型号是:" + size); 17 } 18 public String getSize() { 19 return size; 20 } 21 public void setSize(String size) { 22 this.size = size; 23 } 24 25 26 }
main方法按下面这样就可以调用出来了,但每次只能调用一个,或者可以把每个子类的调用都写出来.
但 如果动物这个类下面的子类写了好多小动物呢?所以还可以采用多态的方法,
如下下面:
1 package com.q1.q11; 2 3 public class Main { 4 5 public static void main(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 中
package com.q1.q11; public class Main { public static void main(String[] args) { Cat cater = new Cat ("可爱猫咪",40,"中小型"); Dog doger = new Dog("帅气的犬",50,"中型"); Test t = new Test(); t.DIX(doger); t.DIX(cater); } }
再新建的一个Test中写:
1 package com.q1.q11; 2 3 public class Test { 4 5 public void DIX( Animial ani) { 6 if(ani instanceof Cat) { 7 Cat kk = (Cat)ani; //如果传过来的动物的某个对象是猫类,就把它强转为猫这个类; 8 kk.Dy(); 9 }else if(ani instanceof Dog) { 10 Dog dd = (Dog)ani; //如果传过来的动物的某个对象是狗类,就把它强转为狗这个类; 11 dd.Dy(); 12 }else { 13 ani.Dy(); //其他的则调用动物这个对象本身的方法来显示 14 } 15 16 } 17 }