Java中的父类与子类
在面向对象编程中,继承是一种重要的机制,它允许我们创建一个新的类(子类)来继承一个已有的类(父类)的属性和方法,Java作为一种广泛使用的面向对象编程语言,也支持这种特性,在Java中,子类可以继承父类的非私有属性和方法,同时还可以添加自己的属性和方法,这种机制使得代码的重用性得到了提高,同时也使得程序的结构更加清晰。
我们来看一下如何在Java中定义一个父类,在Java中,使用关键字“class”来定义一个类,然后在类名后面加上一对括号,括号中写上父类的类名,如果我们想要创建一个名为“Animal”的父类,我们可以这样定义:
class Animal { // 父类的属性和方法 }
我们可以通过关键字“extends”来创建一个子类,子类的类名后面也要加上一对括号,括号中写上父类的类名,如果我们想要创建一个名为“Dog”的子类,我们可以这样定义:
class Dog extends Animal { // 子类的属性和方法 }
在Java中,子类可以继承父类的非私有属性和方法,这意味着,如果父类有一个名为“name”的非私有属性和一个名为“eat”的方法,那么子类可以直接访问这些属性和方法,我们可以在子类的构造方法中调用父类的构造方法,或者在子类的方法中直接使用父类的方法。
class Dog extends Animal { Dog(String name) { super(name); // 调用父类的构造方法 } void bark() { System.out.println("Woof!"); // 使用父类的eat方法 } }
除了继承父类的非私有属性和方法,子类还可以添加自己的属性和方法,我们可以在子类中添加一个名为“color”的属性和一个名为“bark”的方法:
class Dog extends Animal { String color; // 子类的属性 Dog(String name, String color) { super(name); // 调用父类的构造方法 this.color = color; // 初始化子类的属性 } void bark() { System.out.println("Woof!"); // 使用父类的eat方法 } }
子类还可以覆盖父类的方法,这意味着,如果子类和父类有同名同参数的方法,那么当子类的这个方法被调用时,会执行子类的这个方法,而不是父类的这个方法,这种机制使得我们可以改变或扩展父类的行为,我们可以让Dog类的bark方法输出不同的内容:
class Dog extends Animal { String color; // 子类的属性 Dog(String name, String color) { super(name); // 调用父类的构造方法 this.color = color; // 初始化子类的属性 } void bark() { System.out.println("Woof! I am a " + color + " dog."); // 覆盖父类的eat方法 } }
Java中的父类和子类提供了一种强大的机制,使得我们可以创建更复杂、更灵活的程序,通过继承和覆盖,我们可以重用已有的代码,同时也可以改变或扩展已有的行为。
还没有评论,来说两句吧...