继承,转型相关作业
26.定义类Human,具有若干属性和功能;定义其子类Man、Woman;
在主类Test中分别创建子类、父类和上转型对象,并测试其特性。
package zuoye4; public class Human { //属性 private String name; private int age; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } //构造方法 public Human(String name, int age, String sex) { super(); this.name = name; this.age = age; this.sex = sex; } public Human() { super(); } public void Work() { System.out.println("我能工作!"); } }
package zuoye4; public class Man extends Human { // public void Work() // { // System.out.println("我的工作是:程序员!"); // } public void Sing() { System.out.println("我喜欢唱歌"); } }
package zuoye4; public class Woman extends Human { public void Work() { System.out.println("我的工作是:平面设计师"); } public void Like() { System.out.println("我喜欢逛街"); } }
package zuoye4; public class Test { public static void main(String[] args) { Man m=new Man(); m.setName("张三"); m.setAge(25); m.setSex("男"); System.out.println("姓名:"+m.getName()+" 年龄:"+m.getAge()+" 性别:"+m.getSex()); m.Work(); m.Sing(); //向上转型 Human h=new Man();//子类转成父类 h.Work();//如果父类的方法被重写了就调用子类的重写方法,这里没重写。 Human h1=new Human("范冰冰",28,"女");//初始化父类的构造方法 System.out.println("姓名:"+h1.getName()+" 年龄:"+h1.getAge()+" 性别:"+h1.getSex()); Human h2=new Woman();//子类转成父类 h2.Work();//因为子类重写了父类的构造方法,所以调用子类的方法 //向下转型 //Woman w=new Human();//类型不匹配:不能从 Human 转换为 Woman Woman w=(Woman)h2;//h2实则是父类的实例 w.Like(); } }