JAVA中的OPP概念
Java的最大优势之一是面向对象编程(OOP)。这就是为什么这种语言变得如此流行,并且非常适合任何规模的项目。什么是面向对象编程?这不是魔法,但如果你真的进入其中,它看起来会很神奇。OOP是关于如何构建你的软件。这是一个概念,或者更确切地说,是Java中的一堆oop概念,允许您在Java对象之间创建一些特定的交互和关系,以便有效地开发和使用软件。
经典OOP包括3 + 1主要概念。让我们从经典开始。
对象 Java物件以及現實世界物件有兩個特徵:狀態和行為。 例如,人类对象有状态(姓名、性别、睡眠与否......)和行为(研究Java、步行、谈话......)。任何Java对象都将其状态存储在字段中,并通过方法公开其行为。 |
封装
数据封装是将内部数据隐藏到外部世界,并且只能通过公开的方法访问它。那是什么意思?什么数据?躲着谁?隐藏意味着限制对类的数据成员(字段)的直接访问。
它在Java中是如何工作的:
- 领域是私人的
- 类中的每个字段都有两种特殊方法:一个getter和一个setter。Getter方法返回字段的值。设置器方法允许您以间接但允许的方式更改字段的值。
Java代码中的封装示例:
public class Student {
private int age;
private String name;public int getAge() {
return age;
}public void setAge(int age) {
this.age = age;
}public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}public class Test{
public static void main(String[] args) {
Student firstStudent = new Student();
firstStudent.setName("John");
// The name field is private, so you can no longer do this: firstStudent.name = "John";
}
}
为什么要使用封装?
主要原因是让更改代码变得更容易。想象一下,你有一所曲棍球学校的申请,有一个曲棍球学生班,有两个字段,可以存储学生入学时的姓名和年龄。像这样的东西:
public class HockeyStudent {
public String name;
public int ageOfEnrollment;
}
ageOfEnrollment字段是公开的,没有获取器或设置器......该类被许多其他类使用,一切都很好,直到一些开发人员决定单个int字段是不够的。一个队列中的一些曲棍球运动员比他们的同龄人大将近一岁,因此根据他们出生的月份将他们分成两组会更方便。因此,ageOfEnrollment字段应更改为int数组(int[][]):第一个数字是满年,第二个数字是月。现在您需要重构所有使用学生类的代码!但是,如果您的ageOfEnrollment字段是私人的,并且您有获取者和设置者,那么一切都会更容易。如果设置学生年龄的要求发生变化,只需更新setAgeOfEnrollment()设置方法中的逻辑,您的班级就可以继续使用Student,没有任何问题!这个例子有点人为,但我希望它能解释为什么使用封装是一个好主意。
继承
即使没有任何实践经验,这个原则也更容易理解。不要重复自己(DRY)可能是继承概念的座右铭。继承允许您创建一个子类,该子类继承父类的字段和方法,而无需重新定义它们。当然,您可以在子类中覆盖父类的字段和方法,但这不是必须的。此外,您可以在子类中添加新的状态和行为。父类有时被称为超类或基类,子类被称为子类。Java的扩展关键字用于在代码中实现继承原则。