面向对象再理解

一、面向对象的概念

《Java编程思想》中提到 “万物皆为对象” 的概念。
它将对象视为一种奇特的变量,它除了可以存储数据之外还可以对它自身进行操作。 它能够直接反映现实生活中的事物,例如人、车、小鸟等,将其表示为程序中的对象。 每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法),即 在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例。
java就是通过对象之间行为的交互来解决问题的。 面向对象就是把构成问题的事物分解成一个个对象,建立对象不是为了实现一个步骤,而是为了描述某个事物在解决问题中的行为。
类是面向对象中的一个很重要的概念,因为类是很多个具有相同属性和行为特征的对象所抽象出来的,对象是类的一个实例。 (通过引入 类 和接口等概念工具,可以实现减低代码量,提升灵活性等 更能规范化编程)

在这里插入图片描述基础补充

二、Java面向对象的三大特性

1、封装(Encapsulation)

封转是指属性私有化
根据需要提供setter和getter方法来访问属性
隐藏具体属性和实现细节,仅对外开放接口
控制程序中属性的访问级别
目的:增强数据安全性,不能让其他用户随意访问和修改数据,简化编程,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员

2、继承(Extend)

基于已有的类的定义为基础,构建新的类,已有的类称为父类,新构建的类称为子类,子类能调用父类的非private修饰的成员,同时还可以自己添加一些新的成员,扩充父类,甚至重写父类已有的方法,更其表现符合子类的特征。
继承是指将多个相同的属性和方法提取出来,新建一个父类( 为简化众多子类,为了代码复用,进行抽象得出一个基类)
java中一个类只能继承一个父类,且只能继承访问权限非private属性和方法
子类可以重写父类中的方法,命名与父类中同名的属性
其中,super和this的用法相同:this代表本类应用 ;super代表父类引用 。当子父类出现同名成员时,可以用super进行区分 ,子类要调用父类构造函数时,可以使用super语句。
目的:代码复用

3、多态 (向上转型)

方法的重写、重载与动态连接构成多态性。
如果说封装和继承是为了使代码重用,那么多态则是为了实现接口重用。
Cat c = new Cat();//实例化一个Cat的对象,
  Animal a = new Cat();//定义了一个Animal类型的引用,指向新建的Cat类型的对象
  由于Cat是继承自它的父类Animal,所以Animal类型的引用是可以指向Cat类型的对象的。
那么这样做的什么意义是:因为子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特,
  定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。
实现多态有重载和重写两种方式
设计(编译)时多态:即重载(Overload),是指java允许方法名相同而参数不同(返回值可以相同也可以不同),同一个类中允许存在一个或多个以上的同名函数,只要参数类型或参数个数不同即可
运行时多态:即重写(Override)必须是在继承体系中,子类重写父类方法,JVM运行时根据调用该方法的类型决定调用那个方法
动态连接:对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。
目的:增加代码的灵活度,为了解耦–为了解除父子类继承的耦合度。
多态也有弊端:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问子类中特有的方法。(前期不能使用后期产生的功能,即访问的局限性)

三、五大基本原则

1.单一职责原则SRP(Single Responsibility Principle)

类的功能要单一,不能包罗万象,跟杂货铺似的。

2.开放封闭原则OCP(Open-Close Principle)

一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。

3.里式替换原则LSP(the Liskov Substitution Principle LSP)

子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。

4.依赖倒置原则DIP(the Dependency Inversion Principle DIP)

高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的抽象是中国人,而不是你是xx村的。

5.接口分离原则ISP(the Interface Segregation Principle ISP)

设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值