对于Java程序员来说,继承和扩展是必不可少的两个概念。在面向对象的编程中,继承是指子类继承父类的属性和方法,而扩展则是在父类的基础上新增自己的属性和方法。
public class Animal {
private int age;
private String name;
public Animal(int age, String name) {
this.age = age;
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
public void sleep() {
System.out.println(name + " is sleeping.");
}
}
public class Dog extends Animal {
private String breed;
public Dog(int age, String name, String breed) {
super(age, name);
this. breed = breed;
}
public void bark() {
System.out.println(name + " is barking.");
}
public void play() {
System.out.println(name + " is playing.");
}
}
在上面的代码中,Animal类是父类,它有两个属性age和name,还有两个方法eat()和sleep()。Dog类是子类,它扩展了Animal类并新增了一个属性breed和两个方法bark()和play()。
在子类中,可以使用super关键字指代父类,以便访问父类的属性和方法。在Dog类的构造函数中,我们使用了super(age, name)来调用Animal类的构造函数,并将age和name传递给它。
在继承中,子类可以继承父类的所有非私有属性和方法,而且子类可以使用super关键字来访问父类的属性和方法。在上面的例子中,Dog类可以用super.eat()来调用Animal类的eat()方法。
然而,子类也可以重写父类的方法,以便更好地满足自己的需求。在上面的例子中,Dog类重写了Animal类的sleep()方法,使得Dog类对象调用该方法时输出内容与父类不同。通过这样的方式,我们可以让子类更符合自己的需求,有时候甚至比父类更加通用。