深入理解Java面向对象特性:构造方法、this与super

版权申诉
0 下载量 70 浏览量 更新于2024-10-09 收藏 42KB RAR 举报
资源摘要信息:"12_Java面向对象_第4天(构造方法、this、super)_讲义" ### 一、Java面向对象基础 Java语言是一种面向对象的编程语言,它的核心概念包括类(Class)、对象(Object)、方法(Method)和属性(Attribute)。面向对象编程(OOP)强调通过对象和它们之间的交互来设计应用程序。Java中的类是对象的蓝图,对象是类的实例。类可以包含数据和操作数据的代码,这些操作数据的代码通常称为方法。 ### 二、构造方法(Constructor) 构造方法是一种特殊的方法,它在创建对象时自动调用,用于初始化对象。构造方法的名称必须与类名相同,并且没有返回类型。在Java中,每个类都至少有一个构造方法。如果程序员没有显式地定义构造方法,Java编译器会自动生成一个默认的构造方法。当有多个构造方法存在时,它们应该有不同的参数列表,这称为方法重载(Overloading)。 #### 1. 无参构造方法 无参构造方法不需要任何参数,它通常用于执行一些简单的初始化操作。 ```java public class Person { private String name; private int age; public Person() { // 默认初始化代码 } } ``` #### 2. 带参构造方法 带参构造方法需要参数,这些参数用于在创建对象时初始化对象的状态。 ```java public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } } ``` ### 三、this关键字 在Java中,`this`关键字用于引用当前对象。它常用于以下情况: 1. 区分实例变量和局部变量:当局部变量和成员变量具有相同名称时,可以通过`this`关键字来引用成员变量。 ```java public class Person { private String name; public Person(String name) { this.name = name; // this区分实例变量和方法参数 } } ``` 2. 调用其他构造方法:在一个构造方法中使用`this`来调用当前类的另一个构造方法。 ```java public class Person { private String name; private int age; public Person() { this("Unknown"); // 调用另一个构造方法 } public Person(String name) { this(name, 18); // 调用另一个构造方法 } public Person(String name, int age) { this.name = name; this.age = age; } } ``` ### 四、super关键字 `super`关键字用于调用父类的构造方法或访问父类的成员变量和方法。它是用来解决子类和父类之间名称冲突的问题。 #### 1. 调用父类构造方法 当子类创建对象时,它通常需要调用父类的构造方法以初始化继承的成员变量。`super`可以在子类的构造方法中使用来调用父类的构造方法。 ```java public class Employee extends Person { private double salary; public Employee(String name, int age, double salary) { super(name, age); // 调用父类的构造方法 this.salary = salary; } } ``` #### 2. 访问父类的成员 `super`还可以用来访问父类中的成员变量和方法,如果子类中的成员与父类中的成员名称相同。 ```java public class Employee extends Person { private double salary; public Employee(String name, int age, double salary) { super(name, age); this.salary = salary; } public void display() { System.out.println(super.getName() + " " + super.getAge() + " " + salary); } } ``` ### 五、面向对象编程的三大特性 #### 1. 封装(Encapsulation) 封装是指将数据(属性)和行为(方法)包装成一个对象,并对对象的实现细节进行隐藏。通过定义公共接口来与外部交互,增强代码的可维护性和安全性。 #### 2. 继承(Inheritance) 继承是面向对象编程的一种机制,允许新创建的类(子类)继承已有类(父类)的属性和方法,并且可以添加或重写方法来扩展功能。 #### 3. 多态(Polymorphism) 多态是指允许不同类的对象对同一消息做出响应。多态可以通过方法重载和方法重写实现。它允许以统一的方式处理不同的类型,提高了代码的可扩展性和灵活性。 ### 六、参考资料 - 《Java核心技术 卷I 基础知识》 - Oracle官方网站Java教程 - 《Effective Java》 本讲义旨在为Java开发者提供深入理解面向对象编程中构造方法、`this`和`super`等概念的材料。掌握这些概念对于编写高质量、可维护的Java代码至关重要。