1.public、protected、default、private(权限)
1,只有public和default可以用于修饰类CLASS。
2,一个java文件最多只可以有一个public类,且该类名要与文件名一致。
3,一个java文件可以没有public类。
2.static
1,静态方法中不可访问该类的非静态成员(成员分方法和属性)
2,非静态方法,该对象的实例来访问
3,静态方法属于类,并不属于对象,采用的是静态绑定,而并不是重写,父类引用调用的只是父类的静态方法而已
4,静态属性,在形成隐藏域时和静态方法一样
3.final
1,final类不可被继承
2,final方法不可被重写
3,final属性不可以修改,只能在初始化时赋值
4.abstract
1,含有抽象方法的类必须是抽象类
2,抽象类不可实例化,只能用于被继承
5.接口(interface)
1,成员变量只可以是public static final 的(缺省)
2,方法之可以使public abstract的(缺省)
6.值传递与引用传递
1,值传递时,形参的修改与实参没有关系,只是传递了一个值
2,引用传递时,传递的是引用(内存中的地址),改变引用的指向(地址),对实参无效
7.重载(overload)
1,重载发生在一个类中
2,方法同名,不同参
3,重载时可以改变返回值类型
4,如果同名、同参、不同返回值(重名,非重载),编译时会报错
8.重写(overwrite或override)
1,发生在父子类之间
2,方法需同名\同参\同返回
3,重写后的权限不可以比被重写的方法更严格
9.构造方法(constructor)
1,缺省为无参空实现(如果写了构造,则没有该缺省构造)
2,构造方法不可以继承,无返回类型,与类同名
3,构造方法第一句缺省为super();\super(...);和this(...);也只能出现在第一句
4,子类的构造方法一定会调用父类的构造方法
5,构造方法第一句缺省super();时如果父类没有缺省构造或者无参构造,编译时会报错
10.多态(polymorph)
三要素:
1,要有继承
2,要有重写
3,要有父类引用指向子类对象
可以调用的方法:
编译时看引用类型,只可以调用父类有的方法。
实际调用的方法:
JVM在运行时对(非private、static、final)的方法利用动态绑定机制,看的是实际对象的类型,如果方法有被重写,调用的就是重写后的方法。
private、static、final采用的是静态绑定,final方法子类不可以重写,而private、static方法实际上是没有重写的,和隐藏域一样,谁的引用调的就是谁的方法。
好处:
大大增强扩展性,在新增了新的子类和实现之后不用修改以前的代码,
只用在指定子类对象的时候进行指定。可以在配置文件中配置需要实例化的对象,
读取配置之后,同时利用反射机制,来动态的生成子类对象。(超强的灵活性)
或者采用spring的ioc后,无论怎么变更实现方法,只用修改配置文件而已。
11.隐藏域
在继承了属性之后,再重写属性,便构成了隐藏域
1.含有隐藏域后,父类方法中调用的是父类的属性
2.谁的引用调的便是谁的属性
1,只有public和default可以用于修饰类CLASS。
2,一个java文件最多只可以有一个public类,且该类名要与文件名一致。
3,一个java文件可以没有public类。
2.static
1,静态方法中不可访问该类的非静态成员(成员分方法和属性)
2,非静态方法,该对象的实例来访问
3,静态方法属于类,并不属于对象,采用的是静态绑定,而并不是重写,父类引用调用的只是父类的静态方法而已
4,静态属性,在形成隐藏域时和静态方法一样
3.final
1,final类不可被继承
2,final方法不可被重写
3,final属性不可以修改,只能在初始化时赋值
4.abstract
1,含有抽象方法的类必须是抽象类
2,抽象类不可实例化,只能用于被继承
5.接口(interface)
1,成员变量只可以是public static final 的(缺省)
2,方法之可以使public abstract的(缺省)
6.值传递与引用传递
1,值传递时,形参的修改与实参没有关系,只是传递了一个值
2,引用传递时,传递的是引用(内存中的地址),改变引用的指向(地址),对实参无效
7.重载(overload)
1,重载发生在一个类中
2,方法同名,不同参
3,重载时可以改变返回值类型
4,如果同名、同参、不同返回值(重名,非重载),编译时会报错
8.重写(overwrite或override)
1,发生在父子类之间
2,方法需同名\同参\同返回
3,重写后的权限不可以比被重写的方法更严格
9.构造方法(constructor)
1,缺省为无参空实现(如果写了构造,则没有该缺省构造)
2,构造方法不可以继承,无返回类型,与类同名
3,构造方法第一句缺省为super();\super(...);和this(...);也只能出现在第一句
4,子类的构造方法一定会调用父类的构造方法
5,构造方法第一句缺省super();时如果父类没有缺省构造或者无参构造,编译时会报错
10.多态(polymorph)
三要素:
1,要有继承
2,要有重写
3,要有父类引用指向子类对象
可以调用的方法:
编译时看引用类型,只可以调用父类有的方法。
实际调用的方法:
JVM在运行时对(非private、static、final)的方法利用动态绑定机制,看的是实际对象的类型,如果方法有被重写,调用的就是重写后的方法。
private、static、final采用的是静态绑定,final方法子类不可以重写,而private、static方法实际上是没有重写的,和隐藏域一样,谁的引用调的就是谁的方法。
好处:
大大增强扩展性,在新增了新的子类和实现之后不用修改以前的代码,
只用在指定子类对象的时候进行指定。可以在配置文件中配置需要实例化的对象,
读取配置之后,同时利用反射机制,来动态的生成子类对象。(超强的灵活性)
或者采用spring的ioc后,无论怎么变更实现方法,只用修改配置文件而已。
11.隐藏域
在继承了属性之后,再重写属性,便构成了隐藏域
1.含有隐藏域后,父类方法中调用的是父类的属性
2.谁的引用调的便是谁的属性