一.什么是oop?
OOP是面向对象编程(Object-Oriented Programming)的缩写,它是一种编程范式或编程方法论,其主要特点是使用“对象”来设计软件。在OOP中,对象是数据和能够对这些数据执行操作的方法的封装体。面向对象编程的核心概念包括:
1. 类(Class):类是创建对象的蓝图或模板。它定义了一组属性(变量)和方法(函数),用来描述该类的对象的行为。
2. 对象(Object):对象是类的一个实例。当你根据某个类创建了一个具体的实体时,这个实体就是一个对象。
3. 继承(Inheritance):这是一种机制,通过这种机制,一个类可以继承另一个类的属性和方法。这有助于代码重用,并且可以在不修改原始类的情况下扩展功能。
4. 多态(Polymorphism):多态是指允许子类以一种方式去替代父类的能力。这意味着你可以有一个接口来表示多个不同的底层形式(例如,不同种类的动物都实现了发声的方法,但每个种类的声音都是独特的)。
5. 封装(Encapsulation):封装指的是隐藏对象的具体实现细节,仅暴露公共的接口给外部世界。这样做可以保护对象内部状态免受外部直接访问的影响,同时也可以让外部代码更简单,因为它不需要了解复杂的内部工作原理。
6. 抽象(Abstraction):抽象是指简化复杂的现实问题为用户更容易理解和使用的模型的过程。通常通过提供一个简化的接口来实现,使得复杂的逻辑被隐藏起来。
面向对象编程旨在提高软件开发效率、增强代码可读性及维护性,以及促进代码复用。许多现代编程语言如Java、C、Python等都支持面向对象编程。
二.oop的代码示例。
1.public class Book {
// 定义私有属性
private String title; // 书名
private double price; // 价格
private String author; // 作者
private String category; // 类目
// 构造方法
public Book(String title, double price, String author, String category) {
this.title = title;
this.price = price;
this.author = author;
this.category = category;
}
// Getter 方法
public String getTitle() {
return title;
}
public double getPrice() {
return price;
}
public String getAuthor() {
return author;
}
public String getCategory() {
return category;
}
// Setter 方法
public void setTitle(String title) {
this.title = title;
}
public void setPrice(double price) {
if (price >= 0) { // 确保价格非负
this.price = price;
}
}
public void setAuthor(String author) {
this.author = author;
}
public void setCategory(String category) {
this.category = category;
}
// 重写 toString 方法
@Override
public String toString() {
return "Book{" +
"title='" + title + '\'' +
", price=" + price +
", author='" + author + '\'' +
", category='" + category + '\'' +
'}';
}
}
在这个Book类中:
私有变量用于存储书籍的信息。
构造方法用来初始化这些信息。
getter方法用来获取属性值。
setter方法用来设置属性值。
2.public class Animal {
private String name;
private int age;
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public Animal() {
}
public String toString() {
return "Animal{name='" + this.name + "', age=" + this.age + "}";
}
}
这是一个Animal 类的 Java 代码。这个类有两个私有属性:name 和 age,以及对应的 getter 和 setter 方法。此外,还有两个构造函数:一个是无参构造函数,另一个是带有 name 和 age 参数的构造函数。最后,还重写了 toString 方法来方便地打印对象的信息。
3.package com.flow.eda.lean;
public class Cat {
private Stringtail;
public StringgetTail() {
return this.tail;
}
public void setTail(String tail) {
this.tail = tail;
}
public Cat(String tail) {
this.tail = tail;
}
public Cat() {
}
public StringtoString() {
return "Cat{tail='" +this.tail +"'}";
}
}
这是一个 Cat 类的 Java 代码,它继承了某些动物特有的属性,即尾巴(tail)。这个类有一个私有属性 tail,以及对应的 getter 和 setter 方法。此外,还有两个构造函数:一个是无参构造函数,另一个是带有 tail 参数的构造函数。最后,重写了 toString 方法来方便地打印对象的信息。
4.public class Sonextends Animal {
private boolean isEyes;
public void setEyes(boolean eyes) {
this.isEyes = eyes;
}
public boolean isEyes() {
return this.isEyes;
}
public Son() {
}
public StringtoString() {
return "Son{isEyes=" +this.isEyes +"}";
}
public Son(String name,int age,boolean isEyes) {
super(name, age);
this.isEyes = isEyes;
}
}
这是一个 Son 类继承自 Animal 类,并且增加了一个新的布尔属性 isEyes,用于表示是否有眼睛。这个类定义了相应的 getter 和 setter 方法,以及两个构造函数:一个无参构造函数和一个带有 name, age 和 isEyes 参数的构造函数。此外,还重写了 toString 方法来包含 isEyes 属性的信息。