Java基础--面向对象

Updated on with 0 views and 0 comments

三大特性

封装

利用抽象数据类型,将数据和基于数据的操作封装在一起,构成一个实体,将数据和操作细节隐藏在内部,在程序中控制对象的数据及行为的访问级别,用户不需要知道对象内部的细节,可以直接通过对象对外提供的接口来访问对象。

优点:

  • 减少耦合
  • 方便维护

继承

继承实现了IS-A关系,集成遵循里氏替换原则,子类对象必须能够替换掉所有父类对象。子类可以继承父类的非private的属性和方法。

多态

多态分为运行时多态和编译时多态。

  • 编译时多态指方法的重载
  • 运行时多态指的是程序中定义的对象引用的具体类型在运行期间才能确定

满足以下三个条件就会触发运行时多态

  • 继承关系
  • 重写
  • 向上转型

下述代码中,动物类(Animal)有两个子类,猫(Cat)和狗(Dog),都重写了父类的eat()方法,在方法中,使用了Animal作为引用对象类型来引用Cat和Dog对象,调用方法时,会调用实际对象类型的eat方法而不是Animal的eat方法

public class Animal {
    public void eat(){
        System.out.println("动物在吃东西");
    }
}
public class Cat extends Animal{
    @Override
    public void eat(){
        System.out.println("猫在吃东西");
    }
}
public class Dog extends Animal{
    @Override
    public void eat(){
        System.out.println("狗在吃东西");
    }
}
public class TestExtends {
    public static void main(String[] args){
        List<Animal> animalList = new ArrayList<>();
        Animal cat = new Cat();
        Animal dog = new Dog();
        animalList.add(cat);
        animalList.add(dog);
        animalList.forEach(Animal::eat);
    }
}

输出结果如下

image.png

类图

类图是UML图形之一,用来描述类的特性以及类之间的静态关系。

类的静态关系:

  • 关联(Association):表示一个对象与另一个对象的关系,有一对一,一对多,多对多三种关联关系
  • 依赖(Dependency):表示一个类依赖另一个类,被依赖的类可能是一个方法的参数或者局部变量
  • 泛化(Generalization):表示继承关系,在java中用extends标识
  • 实现(Realization):表示实现关系,在java中用implments标识
  • 聚合(Aggregation):弱关联,部分脱离整体后任然可以单独存在,例如电脑和鼠标,电脑销毁了,鼠标任然存在
  • 组合(Composition):强关联,部分无法脱离整体,例如人和手,人消亡了,手也消亡了

标题:Java基础--面向对象
作者:wenyl
地址:http://www.wenyoulong.com/articles/2023/06/16/1686885835379.html