java面向对象的三大特性:封装继承多态。大家都耳熟能详。
所谓的面向对象:我的理解就是当你拿到一个任务的时候你考虑的不是这个任务该怎么一个一个步骤的去完成,而是要考虑这个任务有哪些对象,这些对象有什么属性和方法。各个对象之间有什么关系。
封装:我们常见的java po类就是很好的封装, 因为我们把属性设置为私有的然后通过公共的set和get来控制这些私有属性的读和写。
继承:老虎is动物 存在这种关系的对象之间可以使用继承。继承子类拥有父类private以外的属性和方法。需要注意的是继承的时候构造函数是不能继承的,即在实例化子类的对象的时候如果父类没有默认的构造函数那么子类的构造函数的第一行代码必须显示的调用父类的构造函数(super(aa))。在实例化的过程中也是先调用父类的构造函数在调用子类的构造函数,其实这样就是把父类的数据实例化了所以在继承他的子类就可以访问父类的“”可见“”的属性和方法。
多态:多态是比较难理解的一个。要实现多态必须满足三个条件1.有继承关系 2.有重写3.向上转型(父类类型的变量指向子类的引用)
实现多态的方式有两种一种就是继承类另外一种就是实现接口
A a = new B ();
如果A是B的父类那么a可以访问的就是A中的所有对象,如果A中的方法在B重写了那么访问该方法是B中的方法。
其实在继承链中对象方法的调用存在一个优先级:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。
在调用的优先级的时候也要考虑比优先级最高的this.show(0)也要看下有没有继承他的子类有没有重写该方法。
以下这个实例就是关于优先级的案例:
http://blog.csdn.net/thinkGhoster/article/details/2307001