java的面向对象

看了张孝祥老师的面试题讲解,张老师根据自己的经验总结了一句话,谁拥有数据,谁就对外提供操作这些数据的方法。自己对面向对象设计也不是太好,就自己整理了一下面向对象设计。

面向对象编程和面向过程编程:

面向过程:强调的是功能行为,一种过程,先干啥,再干啥;用户提出哪些要求,面向过程编程的人员就针对用户的要求进行制作,直接制作出一个完整的整体,本身不需要准备好什么工具,在制作的过程总需要什么再单独拿社么。
面向对象:将功能封装到对象里,强调的是具备某功能的对象;面向对象编程的人员针对用户提出的要求进行分析,并将分析的结果设计成一张完整的结构图,与需求的客户确认,然后将一切的准备工作全部处理完之后再分模块制作,具体的功能由各个对象完成,最后将各个模块组合在一起。
面向对象的三大特性:
封装性:
l封装的两个含义:
1、把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类);
2.."信息隐藏",把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段;
封装机制在程序中的体现是:把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保证外界不能任意更改其内部的字段值,也不允许任意调动其内部的功能方法。
封装的实现由访问修饰符来实现,在java中有四种访问修饰符,分别是:private、default、protected、public
private:类访问权限,本类内部可以访问,不能继承到子类
default:包访问权限(默认),本来内部可以访问,同包其他类可以访问,同包可以继承
protected:子类访问权限,本来内部可以访问,不同包的子类可以访问,同包的其他类可以访问,能继承到子类
public:公共访问权限,任何地方都可以访问,能继承到子类
修饰符类内部同包子类任何地方
private   
default  
protected 
public

继承性:
首先有反映一般事物特性的类,然后在此基础上反映出特殊事物的类,继承体现一种从一般到特殊的关系;
被继承的类成为父类或者超类,而继承产生的类成为子类或者派生类,一个子类只能继承一个父类,在java中继承只支持单继承,要想实现多重继承就必须使用接口。子类继承父类,可以继承父类的公有方法和字段,但是私有字段和方法无法继承。
在继承操作中,对于子类对象的实例化,子类对象在实例化之前必须首先调用父类中的构造方法之后再调用自身的构造方法。
子类不能直接访问父类的私有成员,但是子类可以调用父类中的非私有方法来间接访问父类的私有成员
多态行:
方法的重载和覆写
   方法的覆写:子类定义了与父类中同名的方法,覆写方法时需要考虑权限,即被子类覆写的方法不能拥有比父类更严格的访问权限。
   方法的覆写一般是当父类的某个方法不适合于子类本身的特征行为时就当覆写父类中应当改变的方法。
   方法覆写时应遵循的原则:
        方法的签名必须相同(方法的签名指方法名和方法的参数列表,方法的参数列表包括方法的参数类型,参数个数,参数顺序)
        子类方法的返回值类型比父类方法的返回值类型级别更小或者相等
        子类方法声明抛出的异常比父类方法声明抛出的异常级别更小
        子类方法的访问权限比父类方法的访问权限级别更大
    简称 一同两小一大
怎样判断方法是否覆写了:
      判断子类方法是否覆写父类方法,可以在子类方法前加上@Override,如果编译能通过,表明是方法覆写。
   方法的重载:
       在同一个类中,允许存在一个以上的同名方法,只要方法的参数个数或者参数类型,或者参数顺序不同,即是方法的重载。方法的重载与方法的返回值类型无关
     方法重载应遵循的原则
           在同一个类中
            方法名相同
           方法的参数列表不同(方法的参数列表包括方法的参数类型,参数个数,参数顺序)
       简要判断:两同一不同
Overload和Override的比较:
       
区别点Overload重载Override覆写
判断规则两同一不同一同两小一大
权限没有权限要求子类覆写的方法不能拥有比父类更严格的访问权限
范围同一个类继承关系中
术语OverloadOverride
多态编译时多态运行时多态
对象的多态行:编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定,如果编译时类型和运行时类型不同,就出现多态。
实现多态的机制:
父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
多态的作用:
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。只修改方法的实现,不必修改方法的声明,继承是多态产生的前提条件。
分类:
   编译时多态:方法重载
   运行时多态:方法覆写
多态时的方法调用:
   当一个引用类型的变量若声明为父类的类型,但实际上引用的是子类的对象(多态情况):此时该变量不能再访问子类中自己特有的字段和方法;若子类覆写了父类的方法,那么此时通过变量访问到的方法,实际上是子类的方法;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值