孤尽训练营打卡日记day17--面向对象

前言

        Java是一门面向对象的语言,那么问题来了,有人会问,老师,我没对象,我该怎么办,老师会发么还是要自己带,此对象非彼对象,今天我们一起来学习一下面向对象的编程思想。

面向对象编程(Object-Oriented Programming,OOP)

        是划时代的编程思想变革,推动了高级语言的快速发展和工业化进程。OOP 的抽象、封装、继承、多态的理念使软件大规模化成为可能,有效地降低了软件开发的成本、维护成本和复用成本。面向对象编程思想是大型软件的开发就像搭积木一样隔离可控、高效简单,是当今编程领域的一股势不可挡的潮流。OOP实践了软件工程的三个主要目标:可维护、可重用和可扩展性

对象

        万物皆对象,你所能看到的、摸到的、听到的都可以是对象。对象是一个自包含的实体,用一组属性 + 行为标识,谁拥有数据谁就拥有操作的方法。

面向对象的三大特性

封装

        封装是一种对象功能内聚的表现形式,是功能之间的耦合度降低,更具有维护性。每个对象都包含他能进行操作所需要的所有信息,因此对象不必依赖其他对象来完成自己的操作

        属性私有,对外提供可操作的方法

优点:

  • 减少耦合
  • 类内部实现可以自由的修改
  • 类有清晰的对外接口,外界不需要内的内部操作

示例:狗拥有叫这个属性,shout 属性私有,别的类通过 get  和 set 方法访问属性或修改属性 

class Dog{
    private String shout= "汪汪汪";
    public String getShout(){
        return shout;
    }
    public void setShout(String shout){
        this.shout= shout;
    }
}

继承

        继承使子类能够继承父类,获得父类的部分属性和行为,使得模块更具复用性

        对象继承代表一种 a is A  的关系,a是子类,A是父类,也就是 a 是 A,狗 是 动物,狗 就 继承了动物。还可以理解为是对被继承者的特殊化,因为它除了具备被继承者的特性外,还具备自己独有的特性。

        继承定义了类如何相互关联,共享特。继承的工作方式是,定义父类和子类,或者说是基类和派生类,其中子类继承父类的所有特性。子类不但继承了父类的所有特性,还可以定义新的特性。

优点:

  • 继承使得所有子类的公共部分放在了父类,使得代码共享,避免重复
  • 继承使得修改或扩展而来的实现都比较容易

缺点:

  • 父类变子类也要跟着变
  • 父类的实现细节暴露给了子类,破坏了封装,增加了耦合(组合优于继承)

示例:狗和猫都是动物,狗 和 猫都继承了动物,狗会游泳,猫会爬树

class Animal{
    private String shout;
    public String getShout(){
        return shout;
    }
    public void setShout(String shout){
        this.shout= shout;
    }
}


class Dog extends Animal{
    private String swim;
    
}

class Cat extends Animal{
    private String goTree;
    
}

多态

        多态使模块在复用性基础上更加有扩展性,使系统运行更有想象空间。

        多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。子类可以使用 override 关键字,将父类实现替换为他自己的实现,这就是方法重写或者方法改写。

示例:动物都会叫,但是猫是喵喵喵,狗是汪汪汪,我们把shout 改成 方法

class Animal{
    String shout();
}


class Dog extends Animal{
    @Overide
    public String shout(){
        System.out.println("汪汪汪");
    }
    
}

class Cat extends Animal{
    @Overide
    public String shout(){
        System.out.println("喵喵喵");
    }
    
}

抽象(第四大特性)

        对需求进行业务抽象和建模分析,通过模型组合去解决某一类问题。

        上面我举得例子,动物其实是无法实例化的,猫和狗我们都能想象出来一个具体的物体,而动物是一类的统称,所以就延伸了抽象的概念 abstract。

        抽象类通常代表一个抽象概念,他提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点是抽象类。

梧高凤必至,花香蝶自来

参考文档:

无尘老师PPT

《大话设计模式》     --程杰

猜你喜欢

转载自blog.csdn.net/qq_35056844/article/details/121277643