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();
}
}