java之面向对象:继承extends、super、覆盖override的用法
2016-11-26 14:57
411 查看
继承的好处:
1 )提高了代码的复用性。2 )让类与类之间产生了关系,给第三个特征多态提供 了前提。
java支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良。
单继承:一个子类只能有一个直接父类。
class A { } class B { } class C extends A //单继承 { }
多继承:一个子类可以有多个直接各类(java中不允许,进行改良)。
java不直接支持多机场是因为多继承可能会有一些问题,比如多个父类中如果有相同的函数(名字,返回值,参数列表都一样),子类调用该函数就会出现歧义性(不确定性),子类不知道调用哪一个。java中使用了接口来弥补多继承。
class A { } class B { } class C extends A,B //多继承 { }
java支持多层(多重)继承
class A { } class B extends A { } class C extends B { }
super关键字
当类与类之间存在着所属关系的时候,就定义继承。super关键字
当本类的成员和局部变量同名用this区分。
当子父类中的成员变量同名用super区分。
this和super的用法很相似。
class A
{
int num = 4;
}
class B extends A
{
int mum = 5;
void show()
{
System.out.println(this.num+"..."+super.num); //输出5...4
}
}
this和super用法的区别。
this:代表一个本类对象的引用。super::代表一个父类空间。子类继承父类后,就持有super关键字来访问父类空间。
注意:子类不能访问父类私有的内容。
覆盖的用法:
当子父类中出现成员函数一模一样的情况,会运行子类的函数。这种现象称为覆盖操作。
函数有2个特性:
1 重载: 同一个类中,overload
2 覆盖: 子类中,覆盖也称为重写,覆写,override
class A
{
void show()
{
System.out.println("fu show");
}
}
class B extends A
{
void show()
{
System.out.println("zi show");
}
}
覆盖的注意事项:
1 子类方法覆盖父类方法时,子类函数权限必须大于等于父类函数的权限。 (权限由严格到开放的顺序 priavate=>protected=>默认权限=>public)比如父类函数权限是默认权限,子类是private的,是不允许的。
但是父类函数权限是private,子类函数权限是public这其实也不是覆盖。因为父类是私有的,父类自己都不打算给父类对象用了,谈何覆盖?
2 静态只能覆盖静态,父类的静态方法只能被子类的静态方法覆盖。
什么时候使用覆盖操作?
当对一个类进行子类的拓展时,子类需要保留父类的功能声明。但是要定义子类中该功能的特有内容时,就使用覆盖完成。
class Phone
{
void call()
{
}
void show()
{
System.out.println("number");
}
}
class NewPhone extends Phone
{
void show()
{
super.show();
System.out.println("pic");
System.out.println("name");
}
}
相关文章推荐
- JAVA学习第3天(5)继承相关:super用法,复写override
- Java 面向对象:继承多态、覆盖override
- [疯狂Java]面向对象:继承、覆盖、super
- JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖
- JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖
- Java中的继承extends(this,super;类的加载和初始化问题;override,overload)
- Java中覆盖、继承、重载和多态的详细解说与this和super的用法
- 第二十四、Java面向对象三大特性之继承与super关键字
- java继承中super关键字的用法
- JAVA中的继承问题和super的用法
- 【java初学笔记2】马士兵-java-面向对象-31-练习继承、super等内容
- Java方法继承、方法重载、方法覆盖,多态和super关键字小总结
- Java面向对象5——类的继承与权限控制,重写与super
- java学习之旅41--面向对象_14_继承_super_构造器的调用_继承的内存分析(非常重要)
- Lesson_for_java_day09--继承、实例化、构造方法、覆盖、重载、this关键字、super关键字、全局变量和局部变量
- JAVA菜鸟入门篇 - 面向对象三大特征之一:继承 ,方法重写(override)和Object类 (十四)
- 面向对象三大特征之继承(extends)——Java笔记(六)
- java 面向对象之继承extends
- java笔记 chapter4 继承,super,覆盖和重载
- 8、从零开始学习JAVA--继承及super的用法