java面向对象基础

目录

1.设计模式

1.1为什么需要学习设计模式?

1.2常见的设计模式

1.2.1单例模式

1.2.2责任链模式

1.2.3观察者模式

2.基本概念

2.1面向对象的世界观

2.2类和对象

2.3继承

2.4方法的重载和重写

重载(Overload):

重写(Override):

2.5抽象类

2.6接口

2.7多态

2.8异常

3.OOP设计原则

开闭原则

里氏替换原则

迪米特原则(最少知识原则)

单一职责原则(DIP)

接口分离原则(ISP)

依赖倒置原则

组合/聚合复用原则


1.设计模式


1.1为什么需要学习设计模式?


代表了最佳的时间,是很多优秀的软件开发人员的经验总结

恰当的使用设计模式可以代码的可复用性,可维护性,可可扩展性,健壮性及安全性

1.2常见的设计模式


1.2.1单例模式


饥饿模式

懒汉模式

1.2.2责任链模式
1.2.3观察者模式


2.基本概念


2.1面向对象的世界观


世界是由各种各样的具有自己独特的运动规律和内部属性的对象组成,不同对象之间相互作用和通讯就形成了缤纷的世界

好处:更符合人对事物认识的规律

对象:

 

[{"src":"xap:resources/4e7732400c9d1c96fdd0ed4c673bc22231556cd276b008ea66dc92329639b334.png","width":133,"height":111}]

对象之间的交互:

 

概念:类用来封装数据,及处理这些数据的方法

2.2类和对象


概念:类用来封装数据,及处理这些数据的方法

类是抽象,而对象是具体

可以理解为显示中的磨具,如下图

 

建模:对象--(抽象)--》类

实例化:类--(创建)--》对象

类变量:static修饰的变量成员变量

实例变量:没有static修饰的成员变量

类中的static块:在类加载完成,进行初始化事时执行,且每个生命周期只被执行一次,一般的可用于资源初始化

修饰符

public:访问修饰词

abstract:抽象类,不能实例化对象

 final:最终类,不能有子类

2.3继承


允许创建分等级层次的类

继承就是子类继承父类的特征和行为

示意图

 

 关键字:extends

java不允许多重继承

继承的作用:多态

2.4方法的重载和重写


方法:类的行为

方法可以类比是遥控器上的按钮

 

方法不能嵌套定义

不能在方法体外直接写逻辑代码(static块除外)

修饰符及作用域:(接口中定义的方法默认就是public的)

重载(Overload):
一个类里面,方法名字相同,而参数不同,最常用的地方就是构造器的重载

 

好处:

传入不同的方法参数,具有不同的行为(静态多态或叫编译时多态)

必须改变参数列表(参数个数或类型不一样)


规则:

必须改变参数列表(参数个数或类型不一样)

可以改变返回类型

可以改变访问修饰符

可以声明新的或更广的检查异常

方法能够在同一个类中或者在一个子类中被重载

无法以返回值类型作为重载函数的区分标准

重写(Override):
是子类对父类的允许访问的方法的实现过程进行重新编写,但返回值和形参都不能改变

好处:

好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法(运行时多态)

规则:

参数列表必须完全与被重写方法的相同

返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(说明:java5 及更早版本返回类型要一样,java7及更高版本可以不同)

访问权限不能比父类中被冲洗的方法的访问权限更低,列如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected

父类的成员方法只能被它的子类重写

声明为 final 的方法不能被重写(最终方法,不能被重写)

声明为 static 的方法不能被重写,但是能够被再次声明

子类和父类在同一个包中,那么子类可以重写父类所有方法,处理声明为private和final的方法

子类和父类不在同一个包中,那么子类只能够重写父亲的声明为public和protected的final方法

构造方法不能被重写

重写的方法能够抛出任何(非强制异常),无论被重写的方法是否抛出异常。但是,重写·的方法毕业那个抛出新的(强制性异常),或者比被重写方法声明的更广泛的(强制性异常),反之则可以

2.5抽象类


可以定义抽象方法

不能实例化对象

一般用于继承

修饰符:abstract

对类型进行建模

2.6接口


所有方法均为抽象方法(jdk8之后不太合适)

不可实例化

jdk8:接口支持什么带实现的方法,关键字(default)

类只能单一继承,但可以实现多个接口

可以将接口理解为职责或契约

对行为的建模

2.7多态


概念:类的对象对同一消息做出不同的响应,这些不同类要么是继承了相同的父类,要么是实现了相同的接口

 

作用:解耦,各种设计模式的基础

条件:

有继承或实现关系

子类重写父类的方法:

static方法。因为被static修饰的方法是属于类的,而不是属于实例的

final修饰的方法,不能被子类不重写

private修饰的方法,对子类不可见,更不能被重写

protected修饰的方法,虽然子类可见也能重写,但不能再外部引用

实现同一接口

使用父类或接口类型来引用子类或接口的实现类

分类:

编译时多态 方法的重载

运行时多态 方法的重写

2.8异常


分类
    强制异常(或叫受检异常)
        Exception
    非强制异常(或叫非受检异常)
        RuntimeException
    父类PigFather,子类Peppa(佩奇),George(乔治)
        自动向上转型
            PigFather f = new Peppa()
            PigFather f = new George()
        强制向下转型
            Peppa p = (Peppa)new Father()
            George  g = (George)new Father()

throw、throws
    用于抛出 异常实例
    用于在方法定义中声明该方法可能抛出的异常,如果异常为强制异常则方法调用者必须trycatch捕获或者继续抛出

常见异常
    

 

 自定义异常
    最重要的是异常的命名

3.OOP设计原则


开闭原则

    对扩展开放
    对修改关闭
    是所有原则的总目标

里氏替换原则

    子类应当可以替换父类并出现在父类能够出现的地方
    是多态的基础

迪米特原则(最少知识原则)

    只与你的直接朋友交谈,不与"陌生人"说话
    优点:
        其目的是降低类之间的耦合度,提高模块的相对独立性
    缺点:
        过度使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性

单一职责原则(DIP)

    类不要承担太多的功能,职责要单一
    如果承担太多功能,则每个功能的变化都会影响该类

接口分离原则(ISP)

    客户端不应依赖它不需要的接口
    可以理解为接口要符合单一职责原则

依赖倒置原则

    高层模块不应该依赖底层模块,二者都应该依赖抽象
    抽象不依赖于具体,具体依赖于抽象
    中心思想是面向接口编程
    为什么?  细节的东西往往是多变的,而越抽象则越稳定
    示例:

 

组合/聚合复用原则

    如果处于代码复用的目的,则应该使用组合/聚合复用原则,而不要使用继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值