Java面向对象程序设计:继承,多态用法实例分析
简介
面向对象程序设计是Java中最重要的编程思想。其中继承和多态是面向对象程序设计中的两大特性。继承和多态的运用可以对代码架构做到高度的灵活和可维护性,是我们编写高质量代码的关键。
继承
继承是Java中面向对象程序设计的核心概念之一。继承可以使我们的代码重用和复用,提高编程效率。在Java中一个类可以继承另一个类的全部或部分属性和方法。在继承关系中,被继承的类称为父类(或超类),继承的类称为子类(或派生类)。
继承的实现
在Java中实现继承,使用了关键字extends。具体的语法如下:
class 子类名 extends 父类名 {
//成员变量
//方法
}
在子类中访问父类的成员,可以使用super关键字。
继承的用途
继承的主要用途是建立类之间的一种层次关系,实现代码的复用。子类可以访问父类的方法和成员变量,也可以重写父类的方法。
多态
Java中的多态是指同一个方法在不同的对象上具有不同的行为。多态是Java中面向对象编程的重要特性之一。多态可以提高方法的可重用性,使代码结构更为灵活。
多态的实现
在Java中,通过继承和重写方法实现多态。子类继承了父类的方法,然后在子类中重写方法,实现不同的行为。在程序运行时,Java虚拟机(JVM)会根据对象的实际类型来调用相应的方法。
多态的用途
多态可以使代码更加灵活和可扩展。可以在运行时定义对象类型,而不需要在编译时指定类型。多态可以使程序具有更强的扩展性和可维护性,更加适应需求变化的环境。
示例分析
以下是两个示例,分别展示了继承和多态的用法。
示例1
// 父类
class Animal {
public void move(){
System.out.println("动物可以移动");
}
}
// 子类
class Dog extends Animal{
public void move(){
super.move(); // 调用父类方法
System.out.println("狗可以跑和走");
}
}
在这个示例中,子类Dog
继承了父类Animal
的move()
方法,并重写了该方法。在子类中调用super.move()
方法,可以使用父类的实现代码。在子类中增加了具体的行为,实现了狗的跑和走的能力。
示例2
// 父类
class Shape {
protected int x;
protected int y;
public Shape(int x, int y) {
this.x = x;
this.y = y;
}
public void draw() {
System.out.println("Shape.draw()");
}
}
// 子类1
class Circle extends Shape {
private int radius;
public Circle(int x, int y, int radius) {
super(x, y);
this.radius = radius;
}
public void draw() {
System.out.println("Circle.draw()");
}
}
// 子类2
class Rectangle extends Shape {
private int width;
private int height;
public Rectangle(int x, int y, int width, int height) {
super(x, y);
this.width = width;
this.height = height;
}
public void draw() {
System.out.println("Rectangle.draw()");
}
}
public class Example2 {
public static void main(String[] args) {
Shape[] shapes = { new Circle(0, 0, 10), new Rectangle(0, 0, 10, 20) };
for (Shape shape : shapes) {
shape.draw();
}
}
}
在这个示例中,Shape
是父类,包含一个x
和一个y
属性以及一个draw()
方法。Circle
和Rectangle
是子类,分别继承了Shape
类,并重写了draw()
方法。在Example2
中,定义了一个Shape
数组,包含一个Circle
和一个Rectangle
对象。在循环中,对每个对象调用shape.draw()
方法,观察程序运行结果。在运行时,根据实际的对象类型,JVM会分别调用Circle
和Rectangle
的draw()
方法,实现多态的效果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java面向对象程序设计:继承,多态用法实例分析 - Python技术站