(2)java中的集中关系,is a, has a, 继承,重点聊聊继承
java中常见的类关系(javacore上面也有介绍道的)
1、is a关系()
2.has a 整体与局部的关系
3、继承关系 是现实世界中存在而上面两种关系又无法描述的
当然谈的最多的是继承关系,这就出现了,父类和子类。父子类之间有下面一些故事。
父子类中的一般注意事项
子类显示调用父类的构造函数 使用关键字super(), 必须放到子类构造函数的第一行,否则会报错.
super和this的区别
super主要是在子类中使用,调用父类的构造方法super(),调用父类的属性方法super.x(), super.fun();
this则主要在本类中使用只想当前对象。
重写(override)
子类根据实际的需要把从父类哪里继承来的方法自己重写,方法的定义完全相同就是,方法体不一样而已。如果同一个类中两个方法的定义完全相同的话,就会报错。
重载和重写的不同
重载(overload)
1、前提:必须在同一个类中
2、特点:
函数名相同,参数列表不同,与其他无关(访问控制符,返回值类型)
3、不同点:参数个数不同,顺序不同,类型不同
重写(override)
1、前提:继承
2、特点
函数名必须相同、参数列相容返回值
子类的返回值类型必须等于或者小于父类的返回值(这种大小,体现在一种父子关系中,就是说子类返回值应当和父类相同,或者是父类返回值类型的子类级别)
有关抽象类
有抽象函数的类(用abstract修饰的函数),该类一定是抽象类。
抽象类中不一定又抽象函数。是不是抽象类看class有没有abstract修饰
抽象类不能使用new关键字创建对象
java中的接口
java的接口其实是一种多继承
接口可以继承接口,其实是一种高度的纯抽象类
说说多态
可以说,因为有了继承才有了多态,这个可以好好体会。
1、当父类和子类具有相同的非静态成员变量,那么在多态下访问的是父类的成员变量
2.当父类和子类具有相同的静态成员变量,多态下访问的是父类的是父类的静态成员变量
3、当父类和子类具有相同的非静态方法(即子类父类的方法),多态下访问的是子类的成员方法
4、当父类和子类拥有相同的静态方法(即子类重写父类的静态方法),多台下访问的是父类的静态方法.
只要是和静态相关,都是父类优先,非静态,则是子类优先。
Java中的访问权限,声明一句话,有关访问权限的问题,说private权限是私有的,意思就是在该类中能够看到,即便是继承的子类中也是看不到的,只有通过相关的getset方法。