前言
Java是一种面向对象编程语言,抽象、继承、封装、多态,是面向对象语言的四个基本特征,
抽象、继承和封装是多态的基础,同时多态是抽象、继承、封装的表现形式,
简单的讲,多态就是一个消息的多种表现形式。
多态的必要条件
1.必须要有继承,
2.必须要有子类重写父类的方法,
3.父类的引用变量指向子类的对象,
第2点中重写父类的方法的条件有三种情况是不能实现多态
1.父类的方法是静态方法,静态方法是属于类本身而不是对象,静态方法是在class文件加载到java虚拟机时跟着类信息一起存在,
2.父类的方法被final关键字修饰,不能够被子类重写,
3.父类的方法是被private修饰的私有方法,不能够被子孙类重写;父类的方法是被 protected关键字修饰的受保护方法,他虽然能够被子孙类重写,但是不能够被外部方法调用;
因此也是不能够体现多态的特性,
多态的分类
1.方法的重载,多个方法的方法名相同,参数列表,参数类型,参数顺序的不同构成一组重载方法,在编译时期体现,
2.方法的重写,子类在继承父类时,重写父类的方法,并且在程序运行时期调用父类引用指向的对象的方法,
重载指的是在一个具体的类中,参数列表不同,参数类型不同,参数顺序不同,且方法名相同的的一直方法,与返回值的类型和和修饰符无关
Java语言的作用域有四类:public、protected、default、private
1.public:public修饰的成员属性或方法对所有用户公开,
2.protected:protected修饰的成员属性或者方法只对当前类、子孙类、同一个包下的类公开,
3.default:default修饰的成员属性或者方法只对当前类、同一包下的类公开,
4.private:private修饰的成员属性或者方法只能给当前类调用
很多开发多年的Java程序员不太懂Java多态或者是以为多态很简单,然而开发却总写不出任何有质量的代码,我只想说,这不简单,这是很多复杂设计模式的基础,
当然,楼主我也没有专研的很深。依旧在努力,在路上,希望以后写出更精致的文章。