OOP介绍
OOP全称Object Oriented Programming,是指面向对象程序设计,是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。
面向对象编程技术的关键性观念是它将数据及对数据的操作行为放在一起,作为一个相互依存、不可分割的整体——对象。对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。面向对象编程就是定义这些类。
OOP四大原则
这些是基金会的基础。共同形成面向对象的编程范式的 4 个主要特征。了解它们对于成为一名成功的程序员至关重要。
原则 1.继承
***继承***是一种机制,允许您根据现有(父)类描述新类。这样做,新类借用了母班的属性和功能。什么是继承,它提供了什么优势?最重要的是,代码重用。家长班中宣布的字段和方法可用于后代类。如果所有类型的汽车都有 10 个通用字段和 5 个相同的方法,则只需将其移入父类。您可以在后代类中使用它们,没有任何问题。固有优势:定量(较少代码)和定性(类变得简单得多)。此外,继承是非常灵活的-你可以添加写单独的功能,后代丢失(一些领域或行为是特定于特定类别)。总的来说,就像在现实生活中一样,我们都和父母有些相似,但和他们有些不同:)Auto
原则 2.抽象
这是一个非常简单的原则。抽象意味着识别事物的主要、最重要的特征,同时丢弃任何次要和微不足道的东西。无需重新发明车轮。让我们回顾一下关于课程的旧课的一个例子。假设我们正在为公司员工创建一个归档系统。要创建"员工"对象,我们编写了一个类。在公司备案系统中,描述它们有哪些重要特征?姓名、出生日期*、SSN和员工 ID。但是,对于此类记录,我们不太可能需要员工的身高、眼睛颜色或头发颜色。公司不需要有关员工的此类信息。因此,在类中,我们声明以下变量:,,,和。我们抽象掉不必要的信息,如眼睛的颜色。但是,如果我们为建模机构建立备案系统,情况将发生巨大变化。模特的身高*、眼睛颜色和头发颜色是重要特征,但她的SSN与我们完全无关。因此,在类中,我们创建以下变量:,。
原则 3.封装(之前为三大原则,封装时后来加的)
我们已经碰到这个了在 Java 中,封装意味着限制读取和更改数据的能力。正如你所看到的,这个词是基于"胶囊"这个词。我们将使用"胶囊"来隐藏一些我们不希望其他人更改的重要数据。这里有一个简单的例子,从现实生活中。你有名字和姓氏。你所有的朋友都认识他们但他们没有能力更改您的名字或姓氏。我们可以说,这样做的过程是由法院系统"封装"的:你只能通过法院书记员更改你的姓,只有你能做到。其他"用户"可以"仅读"访问您的姓名和姓氏:)另一个说明性的例子是家里存放的现金。把它放在房间中间的视线中不是个好主意。任何"用户"(来你家的人)都可以改变你的钱,即他们可以拿走你的钱。最好把它封装在保险箱里。然后,访问将只提供给您,并且只能使用特殊代码。您已经使用过的封装的明显示例是访问修饰符(私人、公共等),以及设置器和获取器。如果您没有封装类的字段,那么任何人都可以写到:封装机制允许我们使用设置器方法保护字段,在那里我们可以确保年龄不会设置为负数。
原则4.多 态 性
***多态性***是能够与多种类型一起工作,就好像它们是同一类型一样。此外,对象的行为会因类型而异。听起来很复杂吗?现在让我们来理解一下。以最简单的例子为例:动物。创建一个带有单种方法和两个子类的类-和。 现在,我们将尝试声明一个参考变量并分配一个对象。 你认为什么方法会被称为? 或?班里的方法叫:*狼!*我们创建了一个参考,但对象的行为就像一个。如有必要,它可以像猫,马,或其他一些动物的行为。重要的是给一般参考变量分配一个特定的子类。这是有道理的,因为所有的狗都是动物。这就是我们在说"对象的行为会因其类型而异"时所想的。如果我们创建了一个对象。。。 该方法将显示"*草!*但是,我们所说的"能够与多种类型合作,就好像它们是同一类型一样"是什么意思呢?这也非常简单。让我们想象一下,我们正在为动物创建一个理发店。我们的理发店应该能够给任何动物修剪,所以我们创建了一个参数(动物理发)的方法。 现在我们可以通过和对象的方法! 下面是一个明显的例子:该类与类型一起工作,就好像它们是同一类型一样。同时,他们有不同的行为:他们每个人说话的方式不同。Animal``speak()``Cat``Dog
public class Animal {
public void speak() {
System.out.println("Hello!");
}
}
public class Dog extends Animal {
@Override
public void speak() {
System.out.println ("Woof-woof!");
}
}
public class Cat extends Animal {
@Override
public void speak() {
System.out.println("Meow!");
}
}
Animal``Dog
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
dog.speak();
}
}
Animal.speak()``Dog.speak()``Dog``Animal``Dog``Animal``Cat
public static void main(String[] args) {
Animal cat = new Cat();
cat.speak();
}
speak()``trim()``Animal
public class AnimalBarbershop {
public void trim(Animal animal) {
System.out.println("The haircut is done!");
}
}
Cat``Dog``trim()
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
AnimalBarbershop barbershop = new AnimalBarbershop();
barbershop.trim(cat);
barbershop.trim(dog);
}
AnimalBarbershop``Cat``Dog``Cat``Dog