J2SE视频之面向对象——踏破铁鞋无觅处

面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术展到一定阶段后的产物。这篇博客小编将和大家分享我对面向对象中一些名词的认识,如果有不合理的请指正。


一、面向过程和面向对象:

面向过程:以过程为中心的编程思想。分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。以汽车为例,对汽车的启动,停止等方法具体实现,这就是面向过程。


面向对象:以事物为中心的编程思想。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。还以汽车为例,我们生产汽车,只需购买各种零部件,然后组装就可以,不用关心零部件是怎么造出来的,也就是我们只关心我们所抽象出来的对象的属性等,而不关心该汽车的一些事件。这就是面向对象。


二、面向对象三特征:

1.封装

封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。该逻辑单元负责将所描述的属性隐藏起来,外界对客体内部属性的所有访问只能通过提供的用户接口实现。只要用户接口不改变,任何封装体内部的改变都不会对软件系统的其他部分造成影响。良好的封装能减少耦合,不至于,车轮胎坏了,再换辆新车。

生活中的小例子比如说汽车的轮胎坏了,我再换一个,结果并没影响整辆车的行驶,这就是封装,封装了轮胎的材质和它的滚动的方法,封装好了之后,将轮胎通过一个接口将轮胎安装在汽车上,这样即使轮胎换了一个,也不会对车的行驶造成影响。这个和分层思想很接近。


2.继承

继承有点分类的感觉,比如,猫和狗都属于动物,但又不全一样。如果子类继承与父类,第一,子类拥有父类非private的属性和功能;第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;第三,子类还可以以自己的方式实现父类的功能(方法重写)。

不用继承的话,如果要修改功能,就必须在所有重复的方法中修改,代码越多,出错的可能就越大,而继承的优点是,子类公共的部分放在了父类,使代码得到了共享,这就避免了重复。


3.多态

比如猫类和狗类都继承于动物类,动物类中有个跑的方法run(),但猫有猫的跑法,狗有狗的跑法,多态表示猫和狗可以执行相同的动作,但要通过他们自己的实现代码来执行。这就是多态。

三必要条件:

(1)继承

(2)重写

(3)父类引用指向子类对象


例:子弹与飞机:我们的目的是将子弹与飞机封装起来,把画面上有的飞机与子弹画出来。

方案1.拿出每个来,判断,是子弹,画子弹,是飞机画飞机

方案2.设计一个父类,其中定义一个方法draw,子弹和飞机都继承父类,直接调父类的draw方法即可


可扩展性

主建筑建好,将来加一些其他建筑,尽量不要去修改主建筑,盖厨房,直接在主建筑旁边建,我不能说把房子拆了重盖,这样谁也不会同意的。这就是可扩展性。这也体现了开闭原则,对修改关闭,对扩展开放。


三、面向对象思考过程?

1.首先确定用哪个对象;

2.类和对象应该有哪个属性,哪个方法;

3.类与类之间有什么关系


四、对象和类

对象:一切事物皆对象,就是可以看到,听到,尝到或闻到的东西。对象可看成是静态变量(成员变量)和属性(方法)的载体。

类:具有相同的属性和功能的对象的抽象的集合。所有类都有构造方法。他的使用很简单,就实例化一下就可以了。


五、为什么用对象?

1.面向对象的编程——一组对象互相配合通过沟通完成特定功能

2.对象都有对外服务的接口——通过继承可以复用

3.对象隐藏内部服务的实现——通过聚合可以复用

4.面向对象更加容易使我们达到这些年来苦苦追求的境界——维护和替换更加方便

5.组件——比对象更高的层次上的抽象


六、对象的创建和使用

1.必须使用new

2.用对象引用成员变量或来引用对象的成员变量

3.使用对象引用方法来调用对象的方法

4.同一类的每个对象有不同的成员变量存储空间

5.同一类的每个对象共享该类的方法


七、抽象类、接口类

抽象类:abstract修饰,需要注意的:

1.抽象方法一定要重写

2.抽象类不能被实例化

3.含抽象方法的类一定声明为抽象类

例子:



接口类:抽象方法和常量值的定义的集合,是特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

特性:

1.可多重实现。

2.java接口中声明的属性默认为public static final的,也只能是public static final的。

3.只能定义抽象方法,默认public ,只能是public的。

4.可继承其他接口,并添加新的属性和抽象方法。


有趣的小例子:让猫飞

猫不能飞,但是我想实现让猫飞,所以我实现了飞这个接口,这个飞类便是接口类。


有关接口类需要注意:

1.多个无关的额类可以实现同一个接口

2.一个类可以实现多个无关的接口

3.与继承关系类似,接口与实现类之间存在多态性

4.实现了接口,就必须写出接口所有的方法


八、构造方法

构造方法又叫构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new的时候调用。比如:Cat cat=new Cat();new后面的Cat()其实就是构造方法。每个类都有构造方法,如果不编码则系统默认生成空的构造方法,如果编码了,默认的机会失效。

继承中的构造方法:

  1. 调子类对象必须先调父类构造方法(不会产生父类对象)
  2. 子类可在自己的构造方法中使用super(argument_list)调用基类的构造方法
  3. 系统默认调用基类无参数的构造方法
  4. 子类中无显式调用基类构造方法,基类中又没有无参的构造方法,则编译出错。


九、重载、重写、重构

重载:同名的方法可传入不同的参数,这样,系统根据传入的参数选择执行不同的构造方法;

重写:子类都继承父类的方法,猫和狗,谁有谁的叫声,所以就要重写;

重构:动物们参加叫声比赛,刚开始写好了代码,后来小牛和小羊来报名参加比赛,这时按照原来的想法,让他们都继承Animal类就可以了,可是写完发现除了叫声不同,其他代码没有区别,这时就要想想把重复的代码放到父类Animal类中了,子类单独将声音重写即可,这就叫重构。


十、内存分析贯穿始终

创建对象是使用构造函数初始化对象的成员变量,new时,调完构造方法,方法分配的局部变量内存消失(对象被垃圾回收)。这块还不是很熟悉,正在学习中。。。


总结:

以前总结的面向对象很少,这次把一些基础都总结了下,有些可能不合理,欢迎您的指正!


感谢您宝贵的时间!



评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值