OOP中一些基本概念
1 | 多态 |
具体说明
构造方法
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。举例来说:
1 | public class Puppy { |
成员变量/实例变量/成员属性
成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量/静态变量
类变量也声明在类中,方法体之外,但必须声明为static类型。
继承
1 | // 父类Animal |
关于继承的一些知识点:
(1)继承可以使用extends关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有extends关键字时,则默认继承Object(这个类在java.lang包中,所以不需要import)祖先类。Java Object类是所有类的父类,也就是说Java的所有类都继承了Object,子类可以使用Object的所有方法。Object类可以显式继承,也可以隐式继承,以下两种方式时一样的:
1 | // 显式继承 |
(2)在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以extends只能继承一个类。
(3)final关键字声明的类是不能被继承的,即最终类。
1 | final class 类名 { |
多态
所谓多态,就是同一个接口,使用不同的实例执行相同的操作,而表现的内容结果是不一样的。
1 | class Shape { |
重载/覆写
(1)覆写
覆写(override)是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。
(2)重载
重载(overload)是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。
方法签名
方法签名(Method Signature),是来区分不同方法的标示符。JAVA方法签名包括两部分,即方法名和参数列表。访问修饰符和返回值类型不属于方法签名的构成部分,仅仅是访问修饰符或者是返回值类型不同不能区分两个方法。
简单来说,若两个方法的方法签名不一样,那他们就是两个不同的方法。