继承
继承是一种子父类关系,其中 子类继承了父类一般属性和方法。如动物类:
子类:食草 食肉
子类:羚羊,奶牛 豹子,狮子。
注意:
1.extends 关键字,------继承
语法:public class 子类 extends 父类
2. 父类的私有化属性和方法不能被子类继承(访问??)
继承的好处
1. 一般都使用子类2. 核心优势:可以把多个类公有的属性和方法提取出来,形成父类,使得子类里的代码减少。
创建子类对象
注意,创建子类对象时,会调用父类的构造方法,其中调用语句super()放在子类相应构造方法内的第一句,此为系统默认添加。调用父类构造方法的目的:是将父类的属性添加到子类对象里,但是并不会创建父类对象。
面试题
创建子类对象时,会创建父类对象吗? 不会,见到new才会创建对象创建子类对象时,会创建父类引用吗? 不会(对象都没有,引用指哪儿??)
super
super:父类1. 调用父类的一般属性
2. 调用父类的一般方法
3. 调用父类的一般构造方法
注意:super必须在子类里使用
super()必须写在子类构造方法里的第一句(和this类似)
面试题
创建子类对象时,先调用父类构造方法还是先调用子类的构造方法子类,因为对父类构造方法的调用写在子类构造方法第一句,肯定先调用子类,但是,父类的构造方法先执行完。
重写/复写:
重写父类里的方法应用: 当父类方法不满足子类需求时,考虑使用重写
规则:
1. 在子类里编写父类方法。
2. 返回值,方法名,形参必须和父类一致
3. 访问修饰符不能比父类更严格
说白了,子类想重写父类的方法,就必须保持和父类相同的方法名,返回值类型,和参数。而且,访问修饰符不能比父类更严格。
Object类:
其是所有引用数据类型的超类,基类只要一个类没有明确表示继承某个类,那么它默认继承Object类
Object中的equals方法只是比较两个obj对象存储地址是否相同,而String类中重写的equals方法是比较两个字符串内容是否相同。
当需要打印对象时,会默认调用该对象的toString方法,其中,object类的toString方法打印 包名+类名@ 哈希值
而String中的toString方法重写了object中的该方法,它先将两个字符串变为两个字符数组,再一一对比其字符数组元素ASCII码是否相同,,,,用==就可以对比ascii码。
final:
表示:最终的1. 修饰变量:变为常量(不能被修改),存于常量池中
2. 修饰方法:方法不能被重写
3. 修饰类:该类不能被继承
public static int NUM = 1;
Final + static :常量类
常量的命名方式:字母全部大写,单词与单词之间用下划线隔开。