OOP的三大特性

  OOP(Object Oriented Programing)面向对象程序设计的三大特性:封装、继承、多态。

        封装,我们都很熟悉,把所有的成员变量把对象的所有组成部分组合在一起。封装定义程序如何引用对象的数据,控制用户对类的修改和访问数据。简单的说就是将变量和方法封装在一个类中,可以对成员变量进行隐藏,外部对类成员的访问都通过方法进行,能够保护类成员不被非法修改。封装利于模块化和信息隐藏。我们通常所用的DTO、VO、POJO都是封装类。这里就不举例说明了。

  接下来是继承。继承的概念来自于抽象类。抽象类就是包含抽象方法的类,它是不能用来创建对象的。抽象类和抽象方法都要用abstract声明。如果,一个非抽象类A是某一个抽象类B的派生,它重写了这个B类中的某些抽象方法,那么A就是B的子类,用关键字extents表示继承。注意哦,是重写了某些抽象方法,可以不是全部哦。所以,一个抽象类的子类也可以是抽象类。但是,这样的子类也是抽象类(abstract class),不能用来的创建的对象的哦,因为,只有实例化的类才可以用来创建对象。父类中privatefinal的成员都不能被继承。一个成员变量被static和final所修饰时就是静态变量,但是不能同时被Static和final修饰,对于类,不能同时用finalabstract修饰。出于安全性方面的考虑,要避免子类继承超类的某个成员,可以使用“final”关键字来使继承终止。声明为final的成员不能被子类继承或覆盖。另外,继承的一个非常重要的特点是单继承,这就不得不说一下接口了。接口(interface)解决多继承的问题。一个实现类可以实现多个接口,只要用关键字implenments连接就行了。接口也包含抽象方法,所不同的是,接口只做定义而不能有任何实现。

  额,好像有点乱,那就总结一下继承和实现的异同点吧。

  异:

    1、针对的对象不同,继承是相对抽象类而言的,而实现是对于接口来说;

                 2、自然啦,声明方式不同,抽象是abstract class,而接口是interface;

                 3、继承是单继承,接口可以同时实现多个接口;

                 4、子类也可以是抽象类,只是不能用来创建对象,但接口的实现类必须要实现接口中的所有的方法;

                 5、抽象类中可以有实现方法,但接口只做定义,不能有任何实现;

  同:

            1、子类和接口的实现类中都可以有自己特有的方法;

                   2、都可以都方法进行重写和重载。

  关于继承和接口在重写和重载方面的异同点我是测试过的哦,好吧,该讲讲重写和重载啦。

       重写和重载都是多态的体现。至于多态,按字面意思就是“多种形式,多种状态”。它本质是,发送消息给某个对象,让该对象自行决定相应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。验证,以后再添加吧,我得先把所有的知识点整理出来。除此之外,多态还有强制多态、DLL。DLL我还没弄懂,这里先看另外三种吧。

        重载:同一个类内定义名称相同但参数个数或类型不同的方法,调用方法时,根据参数个数和参数类型来具体决定调用哪个方法。

        重写:子类中定义名称、参数个数和类型与父类完全相同的方法,也叫覆盖。一般我们需要对父类的方法进行修改时会用到重写,如果要调用父类的方法,就用super.**()。值得注意的是,子类函数的访问权限不能低于父类的访问权限。而且,当父类的成员变量被final修饰时,是不能被继承和重写的。       

      还有,重写和重载在异常方面的要求不同,重写方法一定不能抛出新的检查异常或是更加宽泛的检查异常,而重载可以抛出新的异常。总的来说,方法的重写要遵循“两同两小一大”规则,“两同”即方法名相同、形参列表相同,“两小”指的是子类方法返回值类型应该比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应该比父类方法声明抛出的异常类更小或相等。“一大”指子类方法的访问权限应该比父类方法的访问权限更大或相等。

     需要特别指出的是,重写方法和被重写方法要么都是类方法,要么都是实例方法,不能一个时类方法,一个实例方法。类方法就是静态方法,通过类名.方法名来调用,实例方法就必须要先声明一个包含这个方法的实例,然后通过实例.方法名来调用的方法。

       java访问控控制符:public-->protect-->default(默认)-->private

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值