158 lines
2.8 KiB
Markdown
158 lines
2.8 KiB
Markdown
# 面向对象编程
|
|
|
|
## 类与对象
|
|
|
|
### 类的定义
|
|
|
|
```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("鸟在飞翔");
|
|
}
|
|
}
|
|
```
|