Java函数的继承和重写
Java中的继承和重写是Object-Oriented Programming(OOP)语言的基本特性之一。继承是指一个类可以从另一个类继承属性和方法,从而使得子类可以复用父类原有的代码。而重写是指子类可以重写父类中的方法,以便在子类中定制自己的行为。
一、继承
Java中的继承是通过关键字“extends”来实现的,子类使用“extends”关键字来继承父类,并且可以继承父类中的属性和方法。示例代码如下:
public class Person{
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Student extends Person{
private String stuId;
public Student(String name, String stuId) {
super(name);
this.stuId = stuId;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
}
在上面的例子中,Student类通过继承Person类,在Person类中定义的name属性和getName、setName方法可以直接在Student类中使用。在定义Student类时,使用了“super”关键字调用了父类的构造函数,从而初始化父类的属性“name”。
二、重写
对于继承了父类方法的子类,有时候需要对父类中的方法进行定制化修改,就需要使用到“重写”这个特性。在Java中,重写是指子类重写父类的方法,从而实现子类自己的行为,在方法名、参数个数及类型等方面与父类方法一致,只是在实现上做了修改。示例代码如下:
public class Animal{
public void voice(){
System.out.println("Animal makes a sound");
}
}
public class Dog extends Animal{
@Override
public void voice(){
System.out.println("Dog barks");
}
}
在上述代码中,Dog类继承了Animal类,并重写了其方法“voice()”。在子类中,使用“@Override”注解,表示这个方法是对父类方法的重写,并且方法名、参数个数及类型与父类方法一致。在重写方法的实现中,Dog类实现了其自己的行为“Dog barks”,与父类Animal不同。
三、super关键字
在子类中使用super关键字可以调用父类中的方法和属性。在构造函数中,使用super可以调用父类的构造函数。示例代码如下:
public class Animal{
private String name;
public Animal(String name){
this.name=name;
}
public String getName(){
return name;
}
}
public class Dog extends Animal{
private int age;
public Dog(String name,int age){
super(name);
this.age=age;
}
public int getAge(){
return age;
}
public void show(){
System.out.println("I am a dog,My name is "+super.getName()+",and I am "+this.age+" years old.");
}
}
在上述代码中,在Dog类的show()方法中,使用“super.getName()”调用了父类Animal中的getName()方法,从而实现获取父类中的属性值。
总结:
继承是面向对象程序设计的一种基本概念,利用继承可以实现代码复用,避免重复劳动,提高代码可维护性,同时也能够减少代码的耦合度。而重写则允许子类对父类方法进行更改、扩展和改善,使子类更加贴近实际情况,从而提高开发效率。
在使用继承和重写时,要注意合理使用关键字“extends”和“@Override”以及关键字“super”,从而保证代码的稳定运行和可读性。
