Java基础--面向对象编程

        面向对象编程是一种以对象为核心的编程范式,其核心在于对象和类的概念。面向对象编程及其三大特性,即封装、继承、多态,是掌握现代编程技术的基础。

一、面向对象编程的本质

1. 基本概念

  • 对象:具有属性和方法的实体

  • :创建对象的模板

  • 消息传递:对象之间通过方法调用来进行交互

2. 面向对象编程的核心思想

  • 抽象:提取关键特征,忽略非本质细节

  • 模块化:将系统分解为高内聚、低耦合的单元

  • 层次化:通过继承建立类型层次结构

3.面向对象编程与面向过程编程

特性面向对象编程面向过程编程
基本单元对象函数
数据访问通过方法控制通常直接访问
扩展方式继承/多态函数组合
典型语言Java/C#/PythonC/Pascal

二、封装

1. 封装的多维理解

        1.隐藏数据:保护对象内部状态

        2.行为绑定:将数据与操作数据的方法结合

        3.接口契约:定义清晰的访问边界

2. 实现模式

public class test {
    private Integer id;//核心数据私有化
    public Integer get (){//受控制的获取方法
        return id;
    }
    public void set (Integer id){//受控制的修改方法
       this.id=id;
    }
    public void print(){//受控制的其他方法
        System.out.println(id);
    }
}

3. 封装的高级应用

        1.不变类:所有字段final,无修改方法

        2.建造者模式:封装复杂对象的构造过程

        3.代理模式:控制对原始对象的访问

三、继承深度解析

1. 继承的多层次理解

        1.语法继承:extends关键字

        2.类型继承:子类"is-a"父类关系

        3.实现继承:代码复用机制

2. 继承体系设计原则

// 继承层次示例
abstract class Animal {
    protected String species;
    
    public Animal(String species) {
        this.species = species;
    }
    
    // 抽象方法定义契约
    public abstract void makeSound();
    
    // 模板方法封装通用算法
    public final void dailyRoutine() {
        wakeUp();
        eat();
        makeSound();
        sleep();
    }
    
    protected void wakeUp() { /* 实现 */ }
    protected void eat() { /* 实现 */ }
    protected void sleep() { /* 实现 */ }
}

class Dog extends Animal {
    public Dog() { super("Canine"); }
    
    @Override
    public void makeSound() {
        System.out.println("Woof!");
    }
    
    // 子类特有方法
    public void fetch() { /* 实现 */ }
}

class Cat extends Animal {
    public Cat() { super("Feline"); }
    
    @Override
    public void makeSound() {
        System.out.println("Meow!");
    }
    
    // 重写父类方法扩展行为
    @Override
    protected void eat() {
        super.eat();
        purr();
    }
    
    private void purr() { /* 实现 */ }
}

3. 继承的替代方案

        1.组合(Composition):通过包含其他类对象实现功能复用

        2.委托(Delegation):将操作转发给其他对象

        3.接口(Interface):定义契约而不提供实现

四、多态深度解析

1. 多态的表现形式

类型机制绑定时机示例
编译时多态方法重载编译时print(String) vs print(int)
运行时多态方法重写运行时Animal a = new Dog(); a.makeSound()
参数多态泛型编译时List<String>
强制多态类型转换运行时(String)obj

2. 运行时多态实现机制

interface Payment {
    void pay(double amount);
}

class CreditCard implements Payment {
    @Override
    public void pay(double amount) {
        System.out.println("信用卡支付:" + amount);
    }
}

class Alipay implements Payment {
    @Override
    public void pay(double amount) {
        System.out.println("支付宝支付:" + amount);
    }
}

class PaymentProcessor {
    // 多态方法:参数类型是接口
    public void processPayment(Payment payment, double amount) {
        payment.pay(amount);  // 动态绑定具体实现
    }
}

// 使用
PaymentProcessor processor = new PaymentProcessor();
processor.processPayment(new CreditCard(), 100.0);
processor.processPayment(new Alipay(), 200.0);

3. 多态的高级应用

        1.策略模式:运行时选择算法

        2.观察者模式:处理多种事件类型

        3.访问者模式:对复杂对象结构进行操作

五、三大特性的协同与平衡

1. 特性关系矩阵

特性组合应用场景示例
封装+继承框架设计父类封装通用逻辑,子类扩展功能
封装+多态组件开发隐藏实现细节,暴露接口
继承+多态算法家族抽象类定义算法骨架,子类实现具体步骤

2. 设计权衡原则

  1. 优先组合而非继承:降低耦合度

  2. 面向接口编程:提高扩展性

  3. 适度封装:避免过度封装导致使用复杂

  4. 合理使用多态:不要为多态而多态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值