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