JAVA后端笔记03-OOP_面向对象

JAVA后端笔记03-OOP_面向对象

JAVA后端笔记03-OOP_面向对象

编程思想
    1)面向对象
        面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为!
    2)面向过程
        就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了!代表是C语言!
    3)面向接口
        开发程序的功能先定义接口,接口中定义约定好的功能方法声明,通过实现该接口进行功能的实现,完成软件或项目的要求.软件或项目随着时间的不断变化,软件的功能要进行升级或完善,
        开发人员只需要创建不同的新类重新实现该接口中所有方法,就可以达到系统升级和扩展的目的.
    4)函数编程
        java的lambda
    5)切口编程(AOP)
        AOP 只适合那些具有横切逻辑的应用场景,比如性能监测 、访问控制 、事务管理以及日志记录等。
类和对象
    1)类class:对事物的抽象,例如“人”就可以看做是一个类
    2)对象,就是类的实现。例如对“人”这个类的实现 就是   彭于晏(一个具体的人的实现,这个人叫彭于晏,很帅,等等等等)
    3)构造器
        用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义!
        构造方法与类名相同,没有返回值,连void都不能写
        构造方法可以重载(重载:方法名称相同,参数列表不同)
        如果一个类中没有构造方法,那么编译器会为类加上一个默认的构造方法。
        构造方法在创建对象时调用,具体调用哪一个由参数决定。
        构造方法的作用是为正在创建的对象的成员变量赋初值。
    4)this
        this 关键字表示当前类
        this是java多态的体现之一
        this只可以在构造方法和实例方法种存在,不能出现在static修饰的方法或代码块中
        this在构造方法中表示刚刚创建的对象
        this在实例方法种表示调用改方法的对象
        this可以在实例方法和构造方法中访问对象属性和实例方法
        this有时可以省略
        this可以在实例方法中作为返回值
        this可以当作实参
        this可调用重载的构造方法
    5)static
        static 表示静态   方便在没有创建对象的情况下来进行调用
        用static修饰以后,表明当前修饰的无论是方法,属性,类 都是属于类的,(而不是类的实现对象,所以用类可以直接调用!)
        static 可以修饰方法 
        static 可以修饰属性 
        static 可以修改代码块 
        static 可以修饰类 普通类是不允许声明为静态的,只有内部类才可以!(叫做静态内部类)!
        扩展:    
        类初始化的顺序从上到下依次初始化:
                                        父类静态变量
                                        父类静态代码块
                                        子类静态变量
                                        子类静态代码块
                                        父类普通变量
                                        父类普通代码块
                                        父类构造函数
                                        子类普通变量
                                        子类普通代码块
                                        子类构造函数
        
    6)final
        fianl 表示最终的不可修改的
        可以修饰成员变量、方法、类以及本地变量。
        一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误!
        定义在类上,表示类不可以被继承
        定义在方法上,表示不可以被重写
        定义在属性上,表示值不可以被修改
    7)import
        表示导包
        方便引用其他包的java类 或者第三方的组件jar包的东西
    8)访问修饰符
        private     只能在本类中使用
        default     只能在本类和本包中使用
        protected     只能在本类、本包、继承的子类中使用
        public        任意地方都可以被访问
    9)重载
        方法的重载:在同一个类中,有相同名字的方法
        重载有三种展示形式:
                            参数列表的个数不同
                            参数列表的类型不同
                            参数列表的顺序不同
        
封装
    封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
    要访问该类的代码和数据,必须通过严格的接口控制。
    封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
    适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性
    广义的封装:
        在代码中可以将某个代码块变成方法,抽象出某些工具类
    狭义的封装:
        1、将属性设置成私有,不能被外部直接访问
        2、提供共有的set和get方法,使外部可以进行调用
        3、可以实现更加复杂细致的内部逻辑判断
        总结:保护类的内部实现细节,只提供公共的对外访问接口,保护类的安全

继承
    继承和现实中的意义基本一致,儿子继承爸爸的部分东西!
    子类可以拥有父类的某些属性和方法,但是私有的除外
    java中式严格意义上的单继承,但是可以多重继承,(儿子 爸爸 爷爷 这种叫做多重继承)!
    使用extends关键字来实现继承
    继承中的重写:
    当父类中的某些方法不能满足子类的需要的时候,子类可以重写父类的方法,要求跟父类的方法名称一致
    子类方法的访问修饰符要大于父类的访问修饰符
    super:
    类似于this 关键字,不过super指的是 爸爸类,this指的是自己!
    在创建对象的时候,可以在子类中直接通过super关键字调用父类的构造方法
    在子类方法中可以使用super.的方法调用父类的方法和属性
    
多态
    多态存在的三个必要条件
    1.继承
    2.重写
    3.父类引用指向子类对象        
    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
    多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
    
    通俗解释;对于同一个指令,不同的对象给予的不同反应
    父类和子类对象的转换:
        由子类到父类,自动转换
        由父类到子类,强制转换,一般通过instanceof进行判断
接口
    接口代表一种能力一种规范
    一个类只能extends一个父类,但可以implements多个接口
    一个接口可以同时extends多个接口,却不能implements任何接口。
    所以说 Java中的接口是支持多继承的。

下图为java中接口并不能 implements 另一个接口:

JAVA后端笔记03-OOP_面向对象
    接口中的方法都是public abstract这样的访问修饰符,不能包含具体的方法实现
    子类如果实现了某个接口,那么接口中的所有方法都要被重写,且实现具体的逻辑,如果没有实现的话,那么子类要么是子接口要么是抽象类
    接口中的属性都是常量值
内部类
    静态内部类
    方法内部类
    匿名内部类  使用最多,形式上像是new 接口,但是只适合于该接口只使用一次的应用场景
    成员内部类

相关文章: