学习笔记 6月1日(周二):内容5 深入理解面向对象的精髓(我好像死记住一些了)

Posted 进步一丢点everyday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记 6月1日(周二):内容5 深入理解面向对象的精髓(我好像死记住一些了)相关的知识,希望对你有一定的参考价值。

面向对象程序设计(Object-Oriented Programming) OOP

  • 面向对象的特征:
    抽象 抽象就是忽略一个主题中于当前目标无关的那些方面,而将目标的某个特征进行提炼。
    继承 继承是一种联接类的层次模型,他提供了一种明确表达共性的方法,并且允许类的方法重用。
    封装 封装把过程和数据包围起来,对数据的访问只能通过已定义的接口。
    多态 多态性允许不同类的对象对同一个消息做出响应。

  • java中,类只能扩展一个其他类,一个子类只能有一个直接的父类,且一个类不能同时声明abstract和final,因为abstract是用来被继承的,而final是不能继承的。

  • java中父子类继承和接口都是is a的关系

  • 方法的重载有就近匹配原则,且方法的名称必须是一致的

  • 方法的覆盖
    –(1)子类方法的名称、参数名和返回类型必须与父类方法的名称、参数名和返回类型一致;
    –(2)子类方法不能缩小分类方法的访问权限;
    –(3)子类方法不能抛出比父类方法更多的异常,子类方法抛出的异常必须和父类方法抛出的异常相同,或者是父类方法抛出的异常类的子类;
    –(4)方法覆盖值存在于子类和父类之间,在同一类中方法只能被重载,不能被覆盖;
    –(5)父类的静态方法崩被子类覆盖为非静态方法;
    –(6)子类可以定义于父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法,jvm把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
    –(7)父类的非静态方法不能被子类覆盖为静态方法
    –(8)父类的私有方法不能被子类覆盖
    –(9)父类的抽象方法可以被子类通过两种途径覆盖:一种是子类实现父类的抽象方法,另一种是子类重新声明父类的抽象方法
    –(10)父亲的非抽象方法可以被覆盖为抽象方法

  • 即使不显式声明抛出异常,在默认情况下,都是可以抛出RuntimeExecption的。

  • java语言中覆盖和重载的相同与不同
    –相同点:
    都要求方法同名
    都可以用于抽象方法和非抽象方法
    –不同点:
    方法覆盖要求参数必须一致,而方法重载要求参数必须不一致。
    方法覆盖要求返回类型必须一致,而方法重载则对此不做限制。
    方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法
    方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载没有限制
    父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次。

  • java构造函数的执行顺序,几点原则
    – 对象由new运算符创建的,且在任何构造函数执行之前就已经创建完毕了;
    –构造函数的执行总是向上的,而且总是先执行完父类的构造函数
    –在构造函数中,没有this()语句,则有super()语句,没有this()时,或者自己编写super(),或者由系统自动调用super();(super和this不能位于同一个组合中)
    –显式初始化语句总是咸鱼构造函数语句,但后于super()和this()语句。

以上是关于学习笔记 6月1日(周二):内容5 深入理解面向对象的精髓(我好像死记住一些了)的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记 6月1日(周二):内容5 深入理解面向对象的精髓(我好像死记住一些了)

学习笔记 6月4日(周五):内容8 面向对象的基础类

学习笔记 6月4日(周五):内容8 面向对象的基础类

学习笔记 6月4日(周五):内容8 面向对象的基础类

C++第六天笔记2016年02月23日(周二)A.M

学习笔记 6月5日(周六):内容9 数据库技术