关于继承
1.继承名为extends,继承在java中有重要意义:实现多态
2.继承有什么好处? 为什要继承?
public class Person
{
private int id;
private String name;
public void eat()
{
System.out.println("天天要吃肉");
}
public void sleep()
{
System.out.println("每天要睡觉");
}
}
public lass Chinese
{
private int id;
private String name;
public void eat()
{
System.out.println("天天要吃肉");
}
public void sleep()
{
System.out.println("每天要睡觉");
}
}
public class American
{
private int id;
private String name;
public void eat()
{
System.out.println("天天要吃肉");
}
public void sleep()
{
System.out.println("每天要睡觉");
}
}
以上代码基本相似,这样写太过繁琐,所以我们就需要用继承来解决这类问题。
public class Person
{
private int id;
private String name;
public void setId(int id)
{
this.id=id;
}
public int getId()
{
return this.id;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
public void eat()
{
System.out.println("天天要吃肉");
}
public void sleep()
{
System.out.println("每天要睡觉");
}
}
public class Test
{
public static void main(String[] args)
{
Chinese a=new Chinese();
a.eat();
a.setName("朱培宇");
System.out.println(a.getName());
American b=new American();
b.sleep();
b.setId(100);
System.out.println(b.getId());
}
}
java中构造方法被继承了吗?
public class Person
{
private int id;
private String name;
public void setId(int id)
{
this.id=id;
}
public int getId()
{
return this.id;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
public void eat()
{
System.out.println("天天要吃肉");
}
public void sleep()
{
System.out.println("每天要睡觉");
}
}
public class Test
{
public static void main(String[] args)
{
Chinese a=new Person();
a.setName("朱培宇");
System.out.println(a.getName());
/*:\zpy\Java基础>javac Test.java
.java:5: 错误: 不兼容的类型: Person无法转换为Chinese
Chinese a=new Person();
*/
}
}
由可见编译报错,得出结论Java中子类不可继承父类的构造方法。
关于重写
子类继承父类的方法和属性(不可被private修饰),但是子类有自己独有的方法和与父类相同的方法名不同的方法体该如何呢?这就需要重写方法。
public class Person
{
private int id;
private String name;
public void setId(int id)
{
this.id=id;
}
public int getId()
{
return this.id;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
public void eat()
{
System.out.println("天天要吃肉");
}
public void sleep()
{
System.out.println("每天要睡觉");
}
}
public class Chinese extends Person
{
public void eat()
{
System.out.println("中国人爱吃肉");
}
public void play()
{
System.out.println("中国人爱打游戏");
}
}
public class American extends Person
{
public void eat()
{
System.out.println("美国人爱吃鱼");
}
}
public class Test
{
public static void main(String[] args)
{
Chinese a=new Chinese();
a.setName("朱培宇");
System.out.println(a.getName());
a.play();
a.eat();
Chinese b=new American();
b.eat();
}
}