JAVA中类只有单继承,没有多继承(就是只能继承一个父类)
(继承财产相当于继承一个爸爸的)
继承的本质是对某一批类的抽象。
继承的好处:- 对于功能相似的类代码。可以通过继承,来减少重写代码的工作量继承后可以通过重写方法,来变成适合的使用的类。(跟第3点是一样的)继承后更方便我们延展代码,方便扩展和维护。
extend的意思是“扩展”,子类是父类的扩展
继承的注意点:- 儿子只能继承(extends)一个父亲(父类)的财产需要注意修饰符的引用,和该类的位置。才可以看可不可以继承一般同个包下,除了私房钱(private修饰),其他都可以继承
Father(父类)
package com.ckw.oop.demoInherit;
public class Father {
int money = 10_0000_0000;
void idea(){
System.out.println("我是爸爸,我有钱");
}
}
Son(儿子)
package com.ckw.oop.demoInherit;
public class Son extends Father{
}
Appliction(执行)
package com.ckw.oop.demoInherit;
public class Appliction {
public static void main(String[] args) {
Son xm =new Son();
xm.idea();
}
}
//结果:我是爸爸,我有钱
//
继承树快捷键(家族树)
ctrl+H
Object类(祖父类)所有的类都是继承了Objerct类。也就是老祖宗。
就算什么都不写,老祖宗也会继承一些东西给你。
super 关键字(指向父类修饰符)super修饰符下,儿子就可以在自己也有同样属性和变量时,应用到父亲的某些变量或者方法。
小结:super 跟 this,都是在同样变量名下,明确指明引用方向。super代表指向父类,this指向本部
super 跟 this 区别this 是 :
- 指向 本部类 的变量(属性)。没有继承也可以用(前提)
super 是 :
- 指向 父亲类 变量(属性)。(如果是私有定义就拿不到。)没有继承用不了(前提)
当所有变量名或者属性名或者形式参数都是一样的时候,使用super跟this可以明确指向父类或者本类。
同变量名 做 修饰符的图解 不同变量名 不做修饰的图解当变量名不重复不做修饰的时候,子类存在父类非私有的变量名,该变量指向父类。(常规应该用修饰符标示出来)
情况总结:用this跟super可以明确引用是哪里的值。便于方法重写的时候做分辨
不包含以下情况:父类如果该变量被修饰为私有时,super就拿不到该变量赋值。
super随着修饰符的等级的降低而取不到值。
构造器的默认继承:如果继承了,(缺省)构造器会自动隐形生成super()方法。继承父类。就是子类什么都不写,还是会有内容。
如果父类构造器变有参数构造,继承他的子类,子类就要显性写出构造器,并定义一个有参数的super(参数)方法。
构造器super()方法的报错- 继承下不能用this()方法
- 如果父类是有参数构造器
- super()只能在构造器的第一列。this()也只能在构造器的第一列。跟super()一山不容二虎。
public 整个项目都可以用(现金)
protected 只在不同包之间可以用(银行存款)
(缺省)default 只可以在同个包之间使用(本地现金)
private 只可以在类内部使用(私房钱)
排序:public > protected > 缺省 > private


