继承是一种由已有的类创建新类的机制。利用继承,可以先创建一个拥有共同属性的一般类,根据该一般类再创建具有特殊属性的新类。由继承而得到的类称为子类(Subclass),被继承的类被称为父类(Superclass)。
直接或间接被继承的类都是父类。子类继承父类的状态和行为,同时也可以修改父类的状态和行为,并添加新的状态和行为。Java中不支持多重继承。
创建子类
java中通过在类的声明中加入extends子句来创建一个类的子类,其格式如下:
class Subclass extends Superclass{
…
}
|
如果默认extends子句,则该类为java.lang.Object的子类。子类可以继承父类中访问权限设定为public、protected的fields和methods。但是不能继承访问权限为private的内容。还有一种default访问权限,在继承的过程中如果遇到default权限的fields和method时需要分以下两种情况考虑:
•►子类和父类在同一包中,子类可以继承父类的default
fields 和default
methods。
•►子类和父类不在同一包中,子类不能继承父类的default
fields 和default
methods。
Fields的隐藏和Methods的重写
当子类中定义的fields和父类中的fields同名时,称子类的fields隐藏了父类的fields。当子类中定义了一个method,并且这个method的名字、返回类型、参数个数以及类型都和父类的某个方法完全相同时,父类的这个方法将被隐藏,这称作重写了父类的method。
子类通过fields的隐藏和methods的重写可以把父类的状态和行为改变为自身的状态和行为。
super关键字
子类在隐藏了父类的fields或重写了父类的methods后,常常还要用到父类的fields或在重写的methods中使用父类被重写的methods以简化代码的编写,这时就要访问父类的fields和methods,Java中通过super来实现父类成员的访问。我们知道,this用来引用当前对象,与this相似,super用来引用当前对象的父类。
super的使用可以分为下面3种情况:
•►用来访问父类被隐藏的fields,如:super.variable
•►用来调用父类中被重写的methods,如:super.method([paralist])
•►用来调用父类的constructor,如:super([paralist])
对象的上转型对象
假设class
A是class
B的父类,当用子类创建一个object,并把这个object的引用放到父类的对象中时,eg:
A a;
A a = new B();
或
A a;
B b = new B();
a = b;
|
则称这个父类对象a是子类对象b的上转型对象。
对象的上转型对象的实体是由子类负责创建的,但上转型对象会失去原对象的一些属性和功能。上转型对象具有如下特点:
•►上转型对象不能操作子类新增的fields和methods。
•►上转型对象可以操作子类继承或重写的fields和methods。
•►如果子类重写了父类的某个method后,当对象的上转型对象调用这个方法时一定是调用了这个重写的方法,因为程序在运行时知道,这个上转型对象的实体是子类创建的,只不过损失了一些功能而已。
Demo:
public
class
Parent {
public
int
i = 10;
}
public
class
Subclass1 extends
Parent {
public
int
i = 20;
}
public
class
Subclass2 extends
Parent {
public
int
i = 30;
}
public
class
Main {
/**
* @param
args
*/
public
static
void
main(String[] args) {
Parent
p = new
Parent();
Parent
sub = new
Subclass1();
Subclass2
sub2 = new
Subclass2();
System.out.println(p.i
+ sub.i
+ sub2.i);
}
}
|
相关推荐
java继承学习教案.pptx
java继承作业.pdf
利用Java继承机制。编写一个抽象的图形类Shape,里面有方法getArea()计算面积以及方法displayArea()显示面积,编写子类矩形类和三角型类分别实现两个方法。
Java中的继承作为Java面向对象三大特性之一,在知识点上而言,还是很多的,而且java的继承与覆盖基本是java笔试中常出的题,也比较绕,下面欧#柏泰#克和大家一起来学习下JAVA继承的相关知识点吧:
java 继承和多态PPT教程
java继承 对象类型的转换 实例代码java继承 对象类型的转换 实例代码java继承 对象类型的转换 实例代码
第一次传东西,大家多多支持呀。一本部分java继承的课件
精选几道java继承及接口的实例
自己设计的一个程序,展现有继承结构的子类对象的初始化过程(包含构造方法、初始化值、父类构造方法、父类的初始化值的环节)
6.java继承的概念.zip6.java继承的概念.zip6.java继承的概念.zip6.java继承的概念.zip6.java继承的概念.zip6.java继承的概念.zip6.java继承的概念.zip6.java继承的概念.zip6.java继承的概念.zip6.java继承的概念.zip...
7.java继承的语法.zip7.java继承的语法.zip7.java继承的语法.zip7.java继承的语法.zip7.java继承的语法.zip7.java继承的语法.zip7.java继承的语法.zip7.java继承的语法.zip7.java继承的语法.zip7.java继承的语法.zip...
java继承和多态PPT教案学习.pptx
java 继承 程序 学习java 必须要学习的知识,搞懂了 你java就入门了
java继承课件,主要用于初学者自学java继承课件,主要用于初学者自学java继承课件,主要用于初学者自学java继承课件,主要用于初学者自学java继承课件,主要用于初学者自学
java继承习题精选 包含可很多习题 同时也副有正确答案
java 继承泛型类示例 java 继承泛型类示例 java 继承泛型类示例
论JAVA继承机制中父类与子类的关系
1继承的概念 2继承的实现 3变量隐藏与方法覆盖 4super关键字 5 子类的构造顺序 6Object类 7 final关键字
linux下java继承开发环境配置,喜欢的人赶快下吧。很有用哦!学习linux很好的。
java继承、多态的简单程序,适合初学者参考,配套Bin_0902的博客使用