1.里氏替换原则:
在继承关系中一个子类继承父类,只要父类对象出现的地方都可以被子类对象替换。
替换后父类引用可以调用到的是子类从父类那里继承过来的属性和方法,如果子类对父类方法进行了重写,那么 也可以调用到重写后的方法。但是不能调用子类特有的属性和方法。
2.多态:
同一个父类,不同的子类对象对同一个指令的响应过程不一样。称为多态。
继承父类,实现抽象方法,通过里氏替换原则,把方法的参数类型设定为父类类型,在进行方法调用的时候可以 传进来不同子类对象作为方法的实参。从而实现多态。
3.方法重写(override)和方法重载(overload)
方法重写是以继承为基础,子类继承了父类之后,子类中拥有和父类签名完全相同(方法的名字,方法的参数列 表,方法的返回值类型对和父类中的某方法相同)的方法,我们说,该方法实现对父类方法的重写。
方法重载是指在同一个类中具有多个同名的方法,而这些同名方法又具有不同的参数列表(方法的参数个数、或 类型不同,仅返回值类型不同无法构成重载)。那么我们说这些同名方法实现了重载。
static:修饰的变量只在类加载时分配一次存储空间,它属性于该类的所有对象共享的一个存储区域,不属性于类的某个对象所独有,所以在访问静态的变量时,通常不需要实例化对象,通过类直接访问即可。所以也叫类变量。
在静态方法中只能访问静态的字段和静态的方法,而不能直接访问非静态的变量和非静态的方法。因它的加载时机要早于非静态的变量和方法。
非静态方法(成员方法)可以访问类变量和类方法。
在静态方法中不可以使用this关键字进行变量和方法的访问。
final:修饰的变量不能被重新赋值,称为常量。final类不可以被继承。final方法被子类继承后不能被重写。
接口:接口是能力和行为的约定,只提供约定,而不做任何的实现。
接口中所有的方法都是抽象的,接口里面可以有静态的常量,而不能有变量以及构造方法。
一个类可以有一个直接的父类 ,但是可以同时去实现多个接口。
如果一类实现一个接口就必须去实现该接口中的所有方法。如果有一个方法没有实现,那么这个类就要定义成抽 象类。
面向接口的编程可以更自然的去实现多态,提高程序后期的可维护性和可扩展性。
接口和抽象类的区别?
接口中所有的方法都是抽象的,并且不允许有构造方法以及成员变量。但是抽象类可以有构造方法,成员变量, 除了有抽象方法,还可以有已经实现的非抽象方法。接口允许多继承,但抽象类则不支持。
相同点是:接口和抽象类都不允许实例化。都可以通过抽象方法约束子类的行为。通过继承类和实现接口都可以实现多态。
==和equals()在对两个引用类型做比较的时候:
前者比较的是两个引用的地址是否相同即它们两个是否引用了同一个对象。后者比较的是两个引用指向的对象保 存的数据是否相同。
类:一个概念,一个模型,从一组具有相同属性和形为的对象中抽取出的一个模型。
对象:是类的一个具体实现,是类的一个实例。
方法调用传参数时,如果参数的类型是基本数据类型(int ,char ,float,double,boolean,byte,long,short)也叫值类型,那么是把实际参数的值复制一份传递给形式参数,形参和实现拥有独立的存储空间,对形参的修改不会影响到实际参数。
如果参数的类型是引用类型,那么是把引用的地址传递给形参,形参和实参数引用同一块存储区域,对形参的修改将直接影响到实际参数。
引用类型:类,数组,接口