面向对象

面向对象的基本概念

面向编程:我们在解决问题中,注重的是解决问题的每一个问题和过程。

面向对象:注重的是在问题中,设计到哪些对象,以及对象之间有哪些关系。

 

核心思想

缺点

算法

面向编程

自顶向下,逐步求精,也就是把功能分解。

 

设计数据结构。

 

编写基础代码,基于数据结构操作。

 

一旦数据结构发生修改,就要修改操作的代码

 

可重用性差

 

可维护性差,维护的成本高

程序 =数据结构+算法

 

 

相对的优点

 

面向对象

分解数据

 

数据,和操作数据是一个整体

数据修改,只涉及对该数据的操作(封装)

 

可实用性好(继承)

 

可维护性好,维护的成本低

程序 = 对象+消息


万事万物皆对象,对象是由静态的属性和动态的行为来组成的。

类:一组具有相同属性和行为的对象的抽象。

消息:像某个对象发送请求。

方法:对象对收到请求的响应。

Java的三大特性:

封装 继承 多态

面向对象的基本特征

类级变量>成员级变量>方法级变量>块级变量

 

抽象:提取实物本质、共性的属性和方法,忽略某些不必要的细节和个性的差异。

 

类的组成:成员变量和成员方法。

 

封装:存在一个边界,边界之内的细节隐藏起来,只留下对外的接口(如,笔记本,手机,饮水机)。

 

为什么使用封装:

(1)  易用,简单。

(2)  安全。

(3)  易维护。

面向对象封装的体现:


多态的体现:重写,重载等。

   重写:重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

 

   重载:根据参数不一样,根据传的参数调用。

 

继承:允许后代直接使用先辈的所有属性和行为。

 

为什么用继承?更好的实现了代码的重用。

 

多态:不同的对象,接收到相同的消息,产生的响应不同。

 

总结:面向对象是一种很自然朴素的方法,来源于生活。

 

构造函数,是在对象实例化时自动被系统调用的,该函数名必须是独一无二的。对于一个类来说,是将类名作为函数名。

构造函数不需要程序员去定义返回值,它是系统自动决定的,viod也不行。

 

Static静态:静态代码块是在加载类的时候自动被执行,早于构造函数,静态的方法,面向的是整个类,不是某个对象,所以没有this,并且只能使用类名来调用,不能使用实例化对象去调用。(一般工具性的方法定为静态)

 

静态方法只能访问静态的变量

一般格式访问的方法是:只有在类被实例化成对象时 根据对象名.调用 而静态格式:只能类名.调用

 

引用:

Pointp = new Point();的含义是首先实例化一个对象(newPoint()),然后定义一个引用,p2只想这个实例,p2=p1;并不是将实例p1赋值给实例p2,而是改变了引用的关系。


Final修饰的类不能不被继承,final修饰的变量不能被修改(也就是常量),final修饰的方法。

 

 

抽象类

为什么去使用抽象类?

 

在现实生活中,有些类我们明明知道是有某些方法的,但具体这些方法是怎么去做的呢又无法说清楚。比如手机、电报、固定电话等都是通讯工具,而通讯工具就应该具有向外送消息的方法、但是却无法说明具体怎么发,而手机、电报等我们又可以说清楚他们是怎么发送消息的。

 

由于抽象类中有未实现的方法,所以抽象类是无法去实例化对象(new),那么它的作用是什么呢,他可以对他的后代进行规划和约束,后代必须去按照他的要求去实现,但具体怎么去实现由后代去决定。


抽象方法:只有声明,没有实现。abstract修饰抽象方法。抽象类不能被实例化,也不能被new,他只能作为父类被继承。


作用:对后代进行规范,即凡是他的后代,必须实现他未实现的方法。

 


抽象类:就是含有抽象方法的类。


比如:形状肯定有计算周长和面积的方法,但是具体如何计算,却无法描述。三角形有三角形的方法,圆有圆的计算方法。所以在形状这个类里只能声明这个方法,但不能实现。


接口


接口里面所有的方法都是抽象方法:所以在接口里面写方法时,所以在声明时,关键词abstract写不写都无所谓。


接口的定义关键词是:interface;抽象类是class;抽象类是来继承(extends)的,接口是实现(implementsss)的。

 

赋值兼容:凡是要用到父类对象的地方,都可以使用其公有子类去代替。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值