来个前言:前两天公司进行内部测试,突然发现,基础掌握的太差了,平常只注重于程序的开发,而忽略了基础。这样的话,基础不牢,长期下去,也发展不远。所以也决心将基础知识逐步进行梳理,并且牢记它,养成一种习惯。
正题
修饰符:public 、protected 、 default 、private
public 修饰的变量和方法不受限制,可以在任何地方进行访问。接口中的方法默认都是public修饰的。
protected 修饰的主要用来为子类(继承)进行服务,无论子类在何种地方都是可以享受它的方法和变量的。
default 修饰的主要用来为同包的类进行服务,同包下的所有类,都是可以访问其同包类保护的变量(通过创建其同包类的实例访问)。
private 修饰的只能在类的内部进行访问。
public | protected | default | private | |
---|---|---|---|---|
内部 | √ | √ | √ | √ |
同包 | √ | √ | √ | × |
子类 | √ | √ | × | × |
非同包 | √ | × | × | × |
谈到继承:单继承多实现(java的多肽)
继承:1、继承的父类应该要有无参的构造方法(非必须),这一点,使用spring容器的话,也会要求这一点
2、子类在继承父类时,会继承父类的public和protected修饰的变量和方法(涵盖了static方法)
3、子类同样可以重写父类的方法,使继承到的方法隐藏。可以用this或者当前对象的实例(或者默认)调用调用其自身重写的方法;调用父类的方法需要使用到关键字super,借此来调用父类的方法(隐藏的显示出来);需要注意的是super和this都不能出现在static方法里面。
4、子类继承父类的变量和方法的调用是类似的(也相当于可以重写,然后像方法那样进行调用父类和子类的变量)
5、子类在进行实例化时,必须要先实例化父类的实例,我们可以在子类构造器中显示的调用父类构造器super(param1,param2)或者通过this(param1,param2)来调用子类的构造器。super和this调用构造器时必须出现在第一行。如果没有显示的调用构造器,则会默认调用父类的无参构造器,这就是第一条我想写的父类应该要有无参的构造器原因
6、方法的重写要遵循:“两同两小一大”
两同 : 方法名字和参数列表相同
两小: 返回值类型和抛出的异常不能比父类的大
一大: 修饰符的权限要大于等于父类的类型
总结一点,有不正确的地方,看到的同学多多指正