JavaSE学习_06_extends_visit_block_override

来源:互联网 发布:c语言从入门到精通txt 编辑:程序博客网 时间:2024/04/29 20:40
1、访问权限
可以有四种修饰方式:
访问权限    类    包    子类    其他包
public     yes   yes    yes     yes
protected  yes   yes    yes     no
default    yes   yes    no      no
private    yes   no     no      no

2、继承(extends)
可以使重复利用代码,通过子类向父类继承,子类可以得到父类除私有属性(用private修饰的)以外的所有数据;即在子类里面可以直接调用或者使用;
语法模型是,public class People extends Animal {}。子类也可以拥有自己的属性或者方法。

3、重写(override)
重写,方法的名字相同,参数列表相同,主要作用是覆盖(屏蔽),不满足当前要求的功能。
重写方法的返回值类型要注意:

1)若父类返回类型是void或者是基本数据类型(int....),子类里重写的方法也要保持一致;

2)若父类的返回值类型是引用数据类型,那么子类型<=父类型(若父类返回的是Animal类型,子类可以是Animal和People类型)

重写方法的权限修饰:
1)父类的私有方法(private修饰的方法)不能重写
2)其他修饰符 子类型>=父类型(子类型不能比父类型更吝啬),若要重写父类用protected修饰的方法,子类只可以用protected或者 public修饰静态的方法不能被重写!!!!
强制检查子类型方法是否重写,在方法声明前加@Oveerride:
1)满足规定条件重写,不报错。
2)没有满足规定条件重写,就报错。

4、块的初始化问题
块的分类:普通块(语句快,在方法或者其他块中)、构造块(在类中)、静态块(在类中)、同步块
构造块和构造器的区别:
1)创建对象时,构造块比构造器先执行;
2)构造块不能传参数,构造器可以传参数;
3)构造块创建对象时一定会执行,而构造器会根据参数的不同而选择执行;
如何选择:若,某些代码一定要执行,不需要参数初始化,就选择构造块;其他情况就选择构造器。
静态块:类信息(静态属性)初始化
静态块和静态属性执行时机:第一次使用类的时候,从类由上到下把所有的静态属性和静态块执行; 使用类的时候,会先检查静态的属性和静态块是否已经初始化,若已经初始化就不再执行,若没有初始化就执行;
有继承链时,构造器、构造块、静态资源执行过程即顺序:第一轮,从父类到子类,依次把静态的资源先初始化(第一轮不用管构造器和构造块);第二轮,再从父类到子类依次初始化构造块和构造器(父类只初始化无参构造器,若父类有构造块和构造器,和静态资源不一样,要把父类构造块和构造器初始化完成才到子类里来初始化),并且要遵循构造块比构造器先初始化的规则。



0 0
原创粉丝点击