学习笔记 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 深入理解面向对象的精髓(我好像死记住一些了)的主要内容,如果未能解决你的问题,请参考以下文章