面向程序设计

89 阅读4分钟

面向程序设计

  • 为什么需要:处理规模比较大的问题

比较

    1.  面向过程编程:
        操作数据,组织数据。
        自顶向下,算法核心。
        函数作为划分程序基本单位,直接面向问题。
    2.  OOP:
        组织数据,操作数据。
        自下而上设计。
        通过类(基本单位)间接解决问题。

- 什么是面向程序设计

一. 类

    为什么需要类:拥有共同属性的一个个对象的集合。
    什么是
1、普通类
2、抽象类
    为什么:为了对类更好的进行分类。
    什么是:1abstract修饰类 2、一个类中没有包含足够的信息来描绘一个具体的对象,作为类族最顶层的父类 
    抽象类是对象的抽象。
    如何用:1、只给出方法头,可以有方法体,方法体中没有实现方法(抽象类不能被实例化,无法在堆中建立空间也就是说无法new出来)。
3、接口
    为什么:Java不支持多继承,但是可以实现多个接口,完善体系。
    什么是:
           1、特殊的抽象方法。
           2、接口只作为一个标识作用,行为规范,行为抽象。
    如何用:
           1、interface修饰类。
           2、关于方法体,JDK8后接口中使用了static或者default关键字修饰的方法是可以包含方法体的。
4、内部类
    为什么:
           1、编程思想解释道:每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。ps:内部类核心是为了弥补Java缺陷,实现多继承,实现某一个接口并且和外部类没有影响。
           2、现实开发中,我为了避免只为了实现一个接口中的某个方法,而且只使用一次的情况,我会用到内部类。
    如何用:
           1、局部位置:局部内部类、匿名内部类。
           2、成员位置、成员内部类、静态内部类。

二. 对象

    为什么:
            1、进行研究的任何事物。
            2、类的一个个体。
    什么是
            1、行为:施加操作和方法。
            2、状态:施加行为时对象有什么响应。
            3、标识:对象有相同的行为但是会有不同的状态。

三. 方法

    为什么需要:
            1、操作数据 
            2、完成特定功能的片段 
            3、类中创建,其他被引用。
    什么是
            1、构造方法 
                    1、实例化对象 
                    2、有参,无参(类默认会有一个无参构造方法) 
                    3、名字必须定义的类名相同并且无返回类型。
            2、普通方法
            3、抽象方法
                    1、对方法分类,让子类继承方法并且实现。 
                    2、建立一个抽象类,在类中创建抽象方法,然后让子类继承,将方法更加丰富实现(方法重写)。
     如何用
            1、修饰符 返回值类型 方法名(参数类型 参数名){ 方法体 }
            2、重写 
                    1、对父类方法不满意(发生在父子类)。 
                    2、权限低于父类,相同的方法参数,相同返回值类型,方法体不一样。
            3、重载 
                    1、对本类中的方法不满意(发生在本类中)。 
                    2、方法名必须相同,方法的参数列表一定不一样,访问修饰符和返回值类型可以相同也可以不同。

四. 封装

    为什么:安全性、复用性、隐藏实现细节。
    什么是:黑盒(控制用户对类的修改和访问数据程度)、会对外提供公开的访问方式。
    如何用:publicprotecteddefaultprivate

五. 继承

    为什么:解决类中重复代码的问题。
    什么是:
         1、子类继承父类并且无条件获得父类全部可继承的属性和方法(继承全部并不代表可以访问父类全部属性和方法,要看父类所修饰的访问权限)。
         2、物理内存全部继承所有父类属性,但是语法上限制使用。
    如何用: extends
            super()
                为什么:子类无法继承父类的构造方法。
                什么是:子类调用父类构造方法。
                如何用:
                    1、只能放在首行,且只有一个。 
                    2、默认调用父类的无参构造函数(注意有无参数对应)

六. 多态

    为什么:提高代码的重用性
    什么是:栈中赋值,进而改变引用指向
    如何用:父类引用访问子类从父类继承的对象(List<> list ***=*** new ArrayList<>()); 如果反过来就会报错必须强转!