面向对象编程
大约 2 分钟
OOP, what's this?
相关信息
Object-Oriented Programming:面向对象编程,以类的方式组织代码,以对象的方式封装数据。
类与对象
类:一类事物共同特征的抽象的模板。
对象:根据类创建的具体实例,拥有相同的方法,但各自的数据可能不同。
属性
全局属性: 定义在类中的属性,作用域是整个类,如果不赋值,系统会赋默认值。
局部属性:定义在方法中的属性,作用域在方法内,使用前必须赋值。当存在重名时优先选择局部变量。
封装
对象的所有属性必须私有化,根据实际情况再提供 get/set
方法访问属性。
将相同的功能代码封装为一个方法,在使用时调用。
多态
对象具有多种形态,同一方法可以根据发送对象的不同而采用不同的行为方式。实现不改变原有的代码,增加新的功能。让程序可以选择多个运行状态,这就是多态性。
特点:
- 多态建立在继承关系上。子类重写父类中的方法后,父类的引用在调用方法时是子类重写后的方法。(多态原理)
- 父类的引用只能调用父类的方法,不能调用子类独有的方法。
- 子类可以自动转换为父类,但是父类转换为子类需要强制类型转换。
public class Test {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
Feeder feeder = new Feeder();
feeder.feed(dog);
feeder.feed(cat);
}
// 吃了一根骨头
// 吃了一条鱼
}
abstract class Animal {
public abstract void eat();
}
class Dog extends Animal {
@Override
public void eat() {
System.out.println("吃了一根骨头");
}
}
class Cat extends Animal {
@Override
public void eat() {
System.out.println("吃了一条鱼");
}
}
class Feeder {
public void feed(Animal animal) {
animal.eat();
}
}