封装(Encapsulation):
-
定义:
- 封装是将数据(变量)和操作数据的方法(函数)捆绑在一起的一种编程机制。
- 封装隐藏了对象的具体实现细节,只暴露出必要的接口供外部访问。
-
关键概念:
- 访问修饰符:Java提供了四种访问修饰符(public、protected、default、private)用于控制类、变量和方法的可见性。
- Getter和Setter方法:用于获取和设置私有变量的值,提供了对对象状态的控制和访问。
-
优点:
- 安全性:封装可以保护数据,只允许通过对象的公共接口进行访问和修改。
- 灵活性:可以轻松更改对象的内部实现,而不影响外部代码的使用。
-
示例:
public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { if (age > 0) { this.age = age; } } }
继承(Inheritance):
-
定义:
- 继承是一种通过创建新类(子类)来重用现有类(父类)的属性和方法的机制。
- 子类继承了父类的字段和方法,并且可以添加新的字段和方法,或者重写父类的方法。
-
关键概念:
- extends关键字:用于创建子类,子类继承父类的属性和方法。
- super关键字:用于在子类中调用父类的构造方法和方法。
- 重写(Override):子类可以根据需要重写父类的方法,以实现自己的特定行为。
- superclass和subclass:父类称为超类(或基类),子类称为子类。
-
优点:
- 代码重用:子类可以继承父类的属性和方法,减少了代码重复。
- 扩展性:可以通过添加新方法或重写现有方法来扩展父类的功能,而不必改变原有的代码。
-
示例:
public class Student extends Person { private String studentId; public String getStudentId() { return studentId; } public void setStudentId(String studentId) { this.studentId = studentId; } }
总结:
- 封装和继承是面向对象编程的重要概念,它们有助于提高代码的可维护性、可重用性和安全性。
- 封装通过隐藏对象的实现细节,提供了对对象的保护和控制。
- 继承通过建立类之间的层次关系,促进了代码的重用和扩展。