让类与类之间产生子父类关系,有了继承性之后,子类就获取到了父类中声明的所有属性和方法。
Java中声明的类如果没有显式声明其父类时,则默认继承于java.lang.Object类
子类继承父类以后,就可以在子类的方法或构造器中,调用父类中声明的属性或方法(满足封装性的前提下)。调用时,需要使用"super."的结构,表示调用父类的属性或方法。子类中重写了父类的方法或子父类中出现了同名的属性时,则必须使用"super."的声明,显式地调用父类被重写的方法或父类中声明的同名的属性。
public class demo34 {
public static void main(String[] args){
Cat c1 = new Cat("白色",4);
System.out.println(c1.getColor() + " " + c1.getLeg());
c1.eat();
c1.catMouse();
System.out.println("-----------------------");
Dog d1 = new Dog("黑色",4);
System.out.println(d1.getColor() + " " + d1.getLeg());
d1.eat();
d1.lookHome();
}
}
/*
猫狗练习
属性:毛的颜色,腿的个数
行为:吃饭
猫特有行为:抓老鼠
狗特有行为:看家
*/
class Animals{
private String color;
private int leg;
public Animals(){
}
public Animals(String color,int leg){
this.color = color;
this.leg = leg;
}
public void setColor(String color) {
this.color = color;
}
public String getColor() {
return color;
}
public void setLeg(int leg) {
this.leg = leg;
}
public int getLeg() {
return leg;
}
public void eat(){
System.out.println("吃饭");
}
}
class Cat extends Animals{
public Cat(){
}
public Cat(String color,int leg){
super(color, leg);
}
public void eat(){
System.out.println("猫吃鱼");
}
public void catMouse(){
System.out.println("抓老鼠");
}
}
class Dog extends Animals{
public Dog(){
}
public Dog(String color,int leg){
super(color, leg);
}
public void eat(){
System.out.println("狗吃肉");
}
public void lookHome(){
System.out.println("看家");
}
}
子类在继承父类以后,就获得了父类中声明的所有的方法。但是,父类中的方法可能不太适用于子类。即子类需要对父类继承过来的方法进行覆盖、覆写的操作(定义)。