Java OOP:多态与引用转型

需积分: 12 1 下载量 73 浏览量 更新于2024-07-10 收藏 1.11MB PPT 举报
"这篇文档是关于Java编程中的继承和多态性的示例,特别是方法覆盖和引用转型。它提到了类的继承、访问权限、构造方法的执行顺序以及super关键字的使用。此外,还介绍了多态性、抽象类、抽象方法、接口、实现接口的关键字(interface和implements)以及final关键字。文档还探讨了父类和子类之间同名成员的处理,包括方法重载和方法覆盖的概念。" 在Java中,继承是一个关键特性,允许我们创建一个新类(子类)来扩展已有类(父类)的功能。`extends`关键字用于表示继承关系,如`class Student extends Person`。这个例子展示了Person类是Student类的基类,而Student是Person的派生类。在Java中,可以将一个子类对象赋值给其父类类型的引用,如`Person per = new Student();`这是多态性的体现,意味着子类对象可以被视为父类类型。然而,不能将父类对象赋值给子类类型的引用,因为不是所有的人都是学生,所以`Student std = new Person();`是错误的。 多态性是面向对象编程的一个重要概念,它允许使用一个父类引用调用子类重写的方法。方法覆盖发生在子类中定义了一个与父类同名且原型相同的方法,如`public void fun()`。在这种情况下,如果通过父类引用调用这个方法,实际执行的是子类的实现。 抽象类和抽象方法是通过`abstract`关键字定义的,它们不提供具体实现。抽象类不能被实例化,只能作为其他类的基类。接口则是一种完全抽象的类型,通过`interface`关键字声明,它可以包含抽象方法和常量,而没有字段。一个类可以实现多个接口,使用`implements`关键字。 `final`关键字用于标记一个变量、方法或类,表示它是不可改变的或防止进一步继承。例如,final类不能有子类,final方法不能被覆盖,而final变量一旦赋值后就不能更改。 关于父类和子类中同名成员的处理,Java提供了`this`关键字引用当前对象,`super`关键字引用父类的对象。当同名方法的参数列表不同,它们构成了方法重载,如`public void fun(int x)`。如果方法名和参数列表都完全相同,就构成了方法覆盖,如`public void fun()`。 通过理解这些概念,开发者可以更有效地设计和实现复杂的软件系统,利用继承、多态性和接口来提高代码的复用性和可扩展性。