1.3、认识继承
目录
权限修饰符
1、private: 只能当前类中访问 (常用)
2、缺省: 只能当前类中,同一个包下的其他类中
3、protected: 只能当前类中,同一个包下的其他类中,子孙类中
4、public: 任何类中都可以访问 (常用)
继承的特点
1、Java中的类是什么继承模式?
Java是单继承的:一个类只能继承一个直接父类
2、Java中的类可以多继承吗?Java中的祖宗类是啥?
不可以,但是可以多层继承
Object类是Java中所有类的祖宗
3、在子类方法中访问成员(成员变量、成员方法)是什么特点?
就近原则,子类有就用子类,子类没有找父类,父类没有就报错!
4、如果子父类中出现了重名的成员,此时“一定要在子类中使用父类” 该怎么办?
super.父类成员变量/父类成员方法
方法重写
重载的特点:
方法名相同,参数不相同,无返回值类型void也不行。
什么是重写?
发生在父子类,子类中出现了和父类中同名的方法,这种现象就是重写
重写的特点:
子类的方法名和父类中的方法名相同,参数相同,返回类型相同。子类访问修饰符不能小于父类的访问修饰符,子类抛出的异常不能大于父类
重写规范:声明不变,重新实现
@Override //方法重写校验注解(标志),要求方法名称和形参列表必须与被重写方法一致,否则报错!
优点:更安全,可读性好,更优雅
子类构造器的特点
构造器用this()调用兄弟构造器
1、this(...) 的作用是什么?
在构造器中调用本类的其他构造器
2、this(...) 和 super(...) 的使用需要注意什么?
都必须放在构造器的第一行
1.4、认识多态
多态好处和存在的问题
1、使用多态有什么好处?存在什么问题?
解耦合;使用父类类型的变量作为方法的形参时,可以接收一切子类对象。
多态下不能直接调用子类独有方法
多态下的类型转换问题
多态下不能直接调用子类独有方法(怎么解决)?
类型转换有几种形式?能解决什么问题?
自动类型转换,强制类型转换。
可以把对象转换成其真正的类型,从而解决了多态下不能调用子类独有方法的问题。
强制类型转换需要注意什么?
存在继承/实现时,就可以进行强制类型转换,编译阶段不会报错。
但是,运行时,如果发现对象的真实类型与强转后的类型不同会报错(classcast (classcastexception)
强制类型转换前?java建议我们做什么事情?
使用 instanceo 判断当前对象的真实类型:对象instanceof类型。