Java OOP(面向对象编程):
- 类(Class):类是对象的模板或蓝图。它定义了一组属性(变量)和一组方法(函数),这些属性和方法可以被类的对象共享。
- 对象(Object):对象是类的实例。每个对象都有其独特的属性值。通过类创建的每个对象都共享该类的属性和方法。
- 封装(Encapsulation):封装是OOP的一个重要概念,它通过将数据(变量)和操作数据的函数捆绑在一起,隐藏对象的内部实现细节,只通过对象的方法来访问这些数据。这有助于保护数据不被外部代码随意修改,提高了数据的安全性和软件的健壮性。
- 继承(Inheritance):继承是从已有的类派生出一个新类。新类(子类)继承了父类(基类)的所有属性和方法,并且可以添加或覆盖父类的行为以定制自己的特性。这提供了代码的重用性,并且允许你构建一个层次结构的类,体现了“is a”的关系。
- 多态(Polymorphism):多态是指一个接口可以有多种实现方式,或者父类引用可以指向子类对象。它允许你使用一个接口或超类来引用不同类型的对象,这样就可以编写不依赖于具体实现而只依赖于接口或超类的代码。这增加了代码的灵活性和可扩展性。
- 抽象(Abstraction):抽象是通过隐藏某些细节来简化复杂事物的过程。在Java中,你可以定义抽象类和抽象方法来创建抽象层,让子类去实现具体的细节。抽象可以帮助你定义接口和规范,让子类按照规定的方式来扩展父类的功能。
- 接口(Interface):接口是一种完全抽象的类,它定义了一组方法,但不需要实现这些方法。任何类可以实现一个或多个接口,并且必须提供接口中定义的所有方法的实现。接口常用于定义一组类应该如何交互,而不需要指定具体的实现细节。
- 重载(Overloading)和重写(Overriding):重载是指在同一类中,方法名相同但参数列表(参数类型、数量、顺序)不同的方法。重载可以提高代码的可读性,因为相同的操作可以有不同的名称。重写是指在子类中定义一个与父类中同名同参数的方法,以覆盖父类中的实现。重写是实现多态的一种方式,子类可以根据需要提供不同的实现。
- 静态变量和静态方法:静态变量是属于类而不是实例的变量,所有实例共享同一个静态变量。静态方法也不需要对象就可以调用,通常用于定义与类相关而不是与特定对象相关的方法。
- 关键字:Java OOP中还有一些重要的关键字,如
this
、super
、final
、null
等,它们在面向对象编程中扮演着重要的角色。
**1.类(Class):**类是对象的模板或蓝图。
public class Person {
// 属性
String name;
int age;
// 方法
void introduce() {
System.out.println("Hello, my name is " + name + " and I'm " + age + " years old.");
}
}
2.对象(Object):对象是类的实例。
public class Main {
public static void main(String[] args) {
// 创建一个Person对象(对象是类的实例)
Person person = new Person();
person.name = "Alice";
person.age = 25;
person.introduce(); // 输出: Hello, my name is Alice and I'm 25 years old.
}
}
3.封装(Encapsulation):将数据(变量)和操作数据的函数捆绑在一起,隐藏对象的内部实现细节,只通过对象的方法来访问这些数据
封装主要体现在类的属性和方法被隐藏在类的内部,外部只能通过对象的方法来访问这些属性。例如:
public class Person {
private String name; // 私有属性,只能在类内部访问
private int age; // 私有属性,只能在类内部访问
public void setName(String name) {
// 公有方法,外部可以通过对象来访问和修改name属性
this.name = name;
}
public void setAge(int age) {
// 公有方法,外部可以通过对象来访问和修改age属性
this.age = age;
}
}
4.继承(Inheritance):继承是从已有的类派生出一个新类
继承允许创建一个新类,继承另一个类的属性和方法。子类可以添加新的属性或覆盖父类的方法。例如:
public class Animal {
String name;
public void eat() {
System.out.println(name + " is eating.");
}
}
public class Dog extends Animal {
// Dog类继承了Animal类
public void bark() {
// Dog类有自己的方法bark()
System.out.println("Woof!");
}
}
5.多态(Polymorphism):多态是指一个接口可以有多种实现方式,或者父类引用可以指向子类对象
多态允许一个接口或超类的引用指向任何实现了该接口或继承了该超类的子类的对象。例如:
eg1:
interface Animal {
void makeSound(); // 接口方法,可以被实现类自定义实现方式
}
class Dog implements Animal {
// Dog类实现了Animal接口,并提供了makeSound()的实现方式
public void makeSound() {
// Dog类自定义了makeSound()的实现方式为“Woof!”
System.out.println("Woof!"); // 输出: Woof!