一、继承
1.分类
业务封装;功能封装
2.作用
封装-->属性的安全!
继承-->重用----重用代码(属性+方法)
多态-->扩展
3.实现继承的步骤
①从多个相似的类中,找出相同的属性和方法,提取出来放到一个单独的类里,这个单独的类就叫父类/基类/超类(其他子类共有的属性和方法)。
②多个相似的类中,只保留各自特有的属性和方法,那么这些相似的类就叫子类(自己的属性和方法)
③在子类中,使用extends关键字,继承父类,从而继承父类里的属性和方法。
4.应用继承
public class cat extends Animal{....}
5.子类可以继承父类哪些资源
---除了父类的 构造方法 不能继承,其他资源都可以继承
---但是继承过来后,还要根据资源的 权限修饰符 来判断是否可用!
二、继承的特性
A.单根性:子类只能继承一个父亲
B.传递性:A3----->B2----->C5(子类继承父类一些属性方法等)
三、继承的方式有两种
A.使用关键字:A extends B
B.隐式继承: A --->继承object类
四、方法重写
1.为什么学习方法重写?
父类里的方法,解决不了子类的问题,所以子类需要重写。
2.重写定义:
子类中,方法名相同,参数列表相同,返回值相同或者缩小,访问修饰符相同或者扩大
子类private方法就会报错
object 所有的最大的基类
3.重载定义:
同一了类中,方法名相同,参数列表不同,与返回值类型和访问修饰符无关的,两个或两个以上的方法。
五、Object类
java中所有类的根基类:
1.finalize();--提醒垃圾回收机制,清除该对象。(不推荐使用)
2.clone();---克隆 (有隐患存在,不推荐使用)
3.wait() ;--等待
4.wait(long timeout,int nanos)等待
5.wait(long timeout)等待
6.notify();--唤醒-----多线程的时候讲
7.getClass();------反射的时候讲
六、toString();
在 Java 中,toString() 方法是一个非常常用的方法,它属于 Object 类,因此所有 Java 类都可以继承并重写这个方法。
toString() 方法的主要目的是返回一个表示对象状态的字符串,以便于调试和日志记录。
这个默认实现返回一个字符串,格式为 类名@哈希码的16进制表示。
com.jr.demo5.Student --全局限定
4554617c --哈希码()的16进制整数值
哈希码 --对象在内存中的地址,经过一个算法,得到的一个数值
equals(Object obj)+hashCode(); ----组合使用获得当前对象的哈希码
----集合:Set去掉重复元素!
将两个对象的哈希值对比,如果哈希值不同,可以存储;
到哈希值相同的情况下:
在使用equals方法进行比较,如果还是相同,不存储;否则存储进去。
七、super
1.
super:当前父类对象
super.父类属性
super.父类方法
子类构造中,调用父类构造:super(); super("111",333);
2.
this.当前对象
this.对象属性
this.对象方法
构造方法互相调用: this();this("111",333);
3.
super();必须是子类构造方法中的第一行
this();也必须是构造方法中的第一行
----解决方法:互相不见
4.
继承情况下,子类构造方法的执行顺序:
Student stu=new Student();
使用子类构造方法创建子类对象的时候,先找到子类的构造方法,
方法中如果开发者手动调用了父类的构造方法,那么程序将先执行父类的构造方法;
如果开发者没有动手调用父类构造方法,那么程序将自动帮忙调用父类的【无参构造方法】,
如果父类也继承了其他类,继续向上,直到找到Object的无参构造方法。在从Object类开始执行,直到当前Student构造方法执行完
5.
Object 先执行Object的构造
A在执行A的构造
Person 在执行person的构造
Student 在执行Student的构造 new Student()