Java面向对象的是三个特征与含义
封装:属性的封装和方法的封装。把属性定义为私有的,get()、set()方法。
好处是信息隐藏和模块化,提高安全性。封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性。
继承:子类可以继承父类的成员变量和成员方法。继承可以提高代码的复用性。
继承的特性:
1.单一继承
2.子类只能继承父类的非私有成员变量和方法
3.成员变量的隐藏和方法的覆盖
多态:当同一个操作作用在不同的对象时,会产生不同的结果。
多态的实现原理:
有两种方式实现多态,一种是在编译时多态,一种是在运行时多态;编译时多态是通过方法的重载来实现的,运行时多态是通过方法重写来实现的。
方法的重载,指的是同一个类中有多个同名的方法,但这些方法有着不同的参数。在编译时就可以确定到底调用哪一个方法。
方法的重写:子类重写父类的方法。父类的引用变量不仅可以指向父类的实例对象,还可以指向子类的实例对象。当父类的引用指向子类的的对象时,只有在运行时才确定调用哪一个方法。
特别注意:只有类中的方法才有多态的概念,类中的成员变量没有多态的概念。
Override(覆盖、重写)和Overlode(重载)的区别
重载和重写是Java多态性的不同表现方式
重载是在一个类中多态性的表现,是指在一个类中定义可多个同名的方法,但是他们有不同的参数或者有不同的参数类型
在使用重载时要注意以下几点:
1.重载只能通过不同的方法参数来区分。例如不同的参数类型,不同的参数个数,不同的参数顺序
2.不能通过访问权限、返回类型、抛出的异常进行重载。
覆盖是指子类的函数覆盖父类中的函数
在覆盖时要注意一下几点(重点!!)
1.覆盖的方法的函数名和参数必须要和被覆盖的方法的参数名和参数完全匹配,才能达到覆盖的效果
2.覆盖的方法的返回值必须和被覆盖的方法的返回值类型一致
3.覆盖的方法所抛出的异常必须和被覆盖的方法所抛出的异常一致,或者是其子类
4.被覆盖的方法不能为private,否则再其子类中只是新定义了一个方法,并没有对其进行覆盖
5.子类方法的访问修饰符权限要大于等于父类的(public>protected>default>private)
特别注意:Java中,子类无法覆盖父类的static方法或者private方法。