Initial commit
This commit is contained in:
157
docs/java/oop.md
Normal file
157
docs/java/oop.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# 面向对象编程
|
||||
|
||||
## 类与对象
|
||||
|
||||
### 类的定义
|
||||
|
||||
```java
|
||||
public class Person {
|
||||
// 属性(字段)
|
||||
private String name;
|
||||
private int age;
|
||||
|
||||
// 构造方法
|
||||
public Person(String name, int age) {
|
||||
this.name = name;
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
// 方法
|
||||
public void sayHello() {
|
||||
System.out.println("你好,我是" + name);
|
||||
}
|
||||
|
||||
// Getter和Setter
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 创建对象
|
||||
|
||||
```java
|
||||
Person person = new Person("张三", 25);
|
||||
person.sayHello(); // 你好,我是张三
|
||||
person.setName("李四");
|
||||
System.out.println(person.getName()); // 李四
|
||||
```
|
||||
|
||||
## 封装
|
||||
|
||||
封装是面向对象的三大特性之一,通过访问修饰符控制类的成员访问权限。
|
||||
|
||||
| 修饰符 | 同一类 | 同一包 | 子类 | 其他 |
|
||||
|--------|--------|--------|------|------|
|
||||
| public | ✓ | ✓ | ✓ | ✓ |
|
||||
| protected | ✓ | ✓ | ✓ | ✗ |
|
||||
| default | ✓ | ✓ | ✗ | ✗ |
|
||||
| private | ✓ | ✗ | ✗ | ✗ |
|
||||
|
||||
## 继承
|
||||
|
||||
```java
|
||||
// 父类
|
||||
public class Animal {
|
||||
protected String name;
|
||||
|
||||
public Animal(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void eat() {
|
||||
System.out.println(name + "正在吃东西");
|
||||
}
|
||||
}
|
||||
|
||||
// 子类
|
||||
public class Dog extends Animal {
|
||||
public Dog(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public void bark() {
|
||||
System.out.println(name + "正在汪汪叫");
|
||||
}
|
||||
}
|
||||
|
||||
// 使用
|
||||
Dog dog = new Dog("旺财");
|
||||
dog.eat(); // 旺财正在吃东西
|
||||
dog.bark(); // 旺财正在汪汪叫
|
||||
```
|
||||
|
||||
## 多态
|
||||
|
||||
```java
|
||||
public class Shape {
|
||||
public void draw() {
|
||||
System.out.println("绘制图形");
|
||||
}
|
||||
}
|
||||
|
||||
public class Circle extends Shape {
|
||||
@Override
|
||||
public void draw() {
|
||||
System.out.println("绘制圆形");
|
||||
}
|
||||
}
|
||||
|
||||
public class Rectangle extends Shape {
|
||||
@Override
|
||||
public void draw() {
|
||||
System.out.println("绘制矩形");
|
||||
}
|
||||
}
|
||||
|
||||
// 多态使用
|
||||
Shape shape1 = new Circle();
|
||||
Shape shape2 = new Rectangle();
|
||||
shape1.draw(); // 绘制圆形
|
||||
shape2.draw(); // 绘制矩形
|
||||
```
|
||||
|
||||
## 抽象类与接口
|
||||
|
||||
### 抽象类
|
||||
|
||||
```java
|
||||
public abstract class Vehicle {
|
||||
protected String brand;
|
||||
|
||||
public Vehicle(String brand) {
|
||||
this.brand = brand;
|
||||
}
|
||||
|
||||
// 抽象方法
|
||||
public abstract void start();
|
||||
|
||||
// 具体方法
|
||||
public void showBrand() {
|
||||
System.out.println("品牌:" + brand);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 接口
|
||||
|
||||
```java
|
||||
public interface Flyable {
|
||||
void fly();
|
||||
|
||||
default void show() {
|
||||
System.out.println("可以飞行");
|
||||
}
|
||||
}
|
||||
|
||||
public class Bird implements Flyable {
|
||||
@Override
|
||||
public void fly() {
|
||||
System.out.println("鸟在飞翔");
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user