JavaSE入门:多态概念与使用详解

需积分: 2 0 下载量 192 浏览量 更新于2024-08-05 收藏 2.07MB DOCX 举报
"JavaSE之多态体系的学习笔记,适合初学者,讲解了多态的概念、格式和使用,以及多态中成员变量的使用特点。" 在Java编程中,多态(Polymorphism)是面向对象三大特性之一,它允许我们使用一个父类类型的引用来调用子类的方法和访问子类的成员变量。多态性使得程序具有更好的灵活性和扩展性,能够处理多种不同类型的对象。 **多态的概念** 多态指的是一个接口可以有多种不同的行为。在Java中,这通常体现在父类引用可以操作子类对象,从而使得同一个方法根据不同的对象表现出不同的行为。这样,我们可以在不关心具体类型的情况下进行编程,增强了代码的抽象性和通用性。 **多态的格式与使用** 在Java中,实现多态的典型语法是: ```java 父类名称 对象名 = new 子类名称(); ``` 或者对于接口: ```java 接口名称 对象名 = new 实现类名称(); ``` 例如: ```java public class Fu { public void method() { System.out.println("父类方法"); } public void methodFu() { System.out.println("父类方法"); } } public class Zi extends Fu { @Override public void method() { System.out.println("子类方法"); } } public class Zhu { public static void main(String[] args) { Fu obj = new Zi(); // 父类引用指向子类对象 obj.method(); // 调用子类方法 obj.methodFu(); // 调用父类方法 } } ``` 在这个例子中,`obj` 是 `Fu` 类型的引用,但实际上指向的是 `Zi` 类的实例,因此 `method()` 方法被子类重写,调用的是子类的版本,而 `methodFu()` 是父类独有的,所以调用的是父类的版本。 **多态中成员变量的使用特点** 在多态场景下访问成员变量有以下两个特点: 1. **直接访问成员变量**:通过对象名直接访问成员变量时,Java会首先查找当前对象实际所属的类(即子类),如果有对应的变量,则使用子类的变量值;如果没有,再向上查找父类的变量。 ```java public class Fu { int num = 10; public void showNum() { System.out.println(num); } } public class Zi extends Fu { int num = 20; // 覆盖父类的num int age = 16; @Override public void showNum() { System.out.println(num); // 优先使用子类的num } } public class Zgu { public static void main(String[] args) { Fu obj = new Zi(); // 父类引用指向子类对象 System.out.println(obj.num); // 访问到子类的num:10 obj.showNum(); // 优先使用子类的showNum方法,输出子类的num:20 } } ``` 2. **间接访问成员变量**:通过成员方法访问成员变量时,Java会查看该方法所在的类,如果该方法中有对成员变量的访问,那么会优先使用方法所在类的成员变量,如果没有则向上查找。 例如,如果在子类中没有覆盖 `showNum()` 方法,那么调用 `showNum()` 会使用父类的版本,此时输出的将是父类的 `num` 值。 总结来说,多态在Java中是一个强大的工具,它允许我们设计出更加灵活和可扩展的代码。理解并熟练掌握多态的概念和用法,对于提升Java编程能力至关重要。对于初学者来说,多练习、多思考是掌握这一概念的关键。希望这些笔记能帮助你更好地理解JavaSE中的多态体系。