java 基础--继承--007
2024-09-29 18:58:42
1,子类只能继承父类所有非私有成员
2,子类不能继承父类的构造方法,但可以通过super去访问父类构造方法
3,子类成员变量和父类成员变量名称不一样,如果一样类似于重写,按子类处理,如果一样,就近原则 3,如果想使用本类成员变量用this.XX 父类用super.XX(this:本类对应的引用,super:父类对应的引用(父类存储空间标识))
4,子类中所有的构造方法都会默认访问父类中的无参构造方法,因为子类会继承父类中的数据,还会使用父类中的数据
因此子类初始化前一定要先完成父类的初始化
注意:子类每一个构造方法的第一条语句默认都是:super()
5,父类没有无参构造方法,子类构造方法怎么办?
1,在父类添加无参构造方法
2,在子类中显示的使用带参super(“xxx”)去调用父类带参构造方法
3,通过this去调用本类的其他构造方法,但是子类中一定要有一个去访问了父类的构造方法,否则父类数据没法初始化
注意:this(...)/super(...)一定要出现在第一条语句上
如果不是放在第一条语句上,就可能对父类的数据进行多次初始化
举例
class Father{
public Father(String name){}
}
class Son extends Father{
public Son(){
super("xxx");
}
public Son(String name){
super("XXX");// 方法2,
this();//方法3,同时将上句注释掉 }
}
6,子类方法和父类方法声明一样,怎么办?
1,先找子类中有没有这个方法,有就使用
2,再找父类中有没有这个方法,没有就报错 7,子类重写了父类的方法,但是还想用父类方法中的功能怎么办?
使用super调用父类的被重写方法
举例:
class Father{
public void call(String name){
System.out.println("父类的方法")
}
}
class Son extends Father{
public void call(String name){
super.call(name);
System.out.println("子类的方法")
}
} 8,1,父类私有方法不能被重写,因为私有方法无法被继承
2,子类重写父类方法时,访问权限不能更低,最好一致
3,父类的静态方法,子类也必须通过静态方法重写(父类为非静态),子类也不能为静态
千言万语一句话:子类和父类保持一致 class Father{
public void call(String name){
System.out.println("父类的方法")
}
}
class Son extends Father{
//子类不能覆盖父类方法
void call(String name){
System.out.println("子类的方法")
}
}
最新文章
- 算法--数组中出现一次的数,其余都出现N次
- 【JDBC】向数据表插入数据时,自动获取生成的主键
- nginx redis tomcat 分布式web应用 session共享
- sudo: unable to resolve host XXX 解决方法
- hive hbase pig 区别
- logstash 各种时间转换
- kettle工具二次开发-代码启动JOB
- webAppRootKey
- javascript 六种数据类型(一)
- 2019.03.25 bzoj4568: [Scoi2016]幸运数字(倍增+线性基)
- 目前比较火的前端框架及UI组件
- Layers Of Caffe
- ConfigurationManager 类的使用
- Golang并发编程中select简单了解
- Bootstrap(6)辅组类和响应式工具
- redmine生产环境搭建
- ovs源码阅读--netlink使用
- win7,Ubuntu 12.04 双系统修改启动项顺序三方法
- PLSQL_统计信息系列09_统计信息在不同数据库中迁移
- myeclipse注册机,自己生成注册码