super:指代父类对象
- this: 指代当前创建对象
-
- 用在构造器的首行可以掉用父类中的构造器
super(参数)–>匹配父类中构造器的参数
如果没有显示定义,默认在子类构造器的首行存在super(),默认调用父类的空构造 - 区分子父类同名问题
如果存在同名问题,默认隐藏this,默认就近原则找当前子类中的,如果想要指定父类中,要使用super调用
注意:
先父类后子类
不能显示同时定义this()和super(),因为都要存在于构造器的首行,但是可以隐式同时使用,默认调用父类空构造,显示调用子类其他构造器
就近找局部,然后如果同时存在局部,子类成员,父类成员同名问题,默认找局部,子类成员this,父类成员super
- 用在构造器的首行可以掉用父类中的构造器
final 最终的
被final修饰的变量为常量,不能改变
被final修饰的方法,不能被重写
被final修饰的类不能被继承(太监类)
Object 所有类的父类(老祖宗类)
在java中的所有类都会直接或者间接的继承自Object
toString: 打印一个对象的引用,默认调用这个对象的toString()方法
目的: 打印对象的信息的字符串表示形式
类中重写toString方法,自定义方法体的实现
比较地址
equals : 可以比较对象的内容是否相同
public boolean equals(Object obj) {
return (this == obj);
}
equals在Object中默认比较的还是对象的地址
练习:重写equals,比较两个User用户的姓名和年龄,如果两个用户的姓名和年两全部相同才是真的相同
思路:1.自定义User类,重写toString equals()-->比较的是姓名和年龄
多态使用成员
成员变量:
编译运行找父类
编译运行看左边
成员方法:
编译看父类,运行看子类
编译看左边,运行找右边
编译看类型,运行找对象
多态 面向对象三大特性之一
一种事物多种形态|多种表现形式
多态的前提:
类的继承 | 接口的实现
多态的最终体现:
父类的引用指向子类的对象 多态的目的:
父类的引用在调用子父类中同名方法的时候,会调用子类中重写的方法
注意:子类中新增的方法对父类不可见
重写equals,比较两个User用户的姓名和年龄,如果两个用户的姓名和年两全部相同才是真的相同
思路:1.自定义User类,重写toString equals()–>比较的是姓名和年龄