JAVA中的继承及其常见问题分析
1、JAVA中继承的定义
JAVA中,类的继承是通过扩展其他类而形成新类来实现的,原来的类称为父类(Super Class)或基类,新的类称为原来类的子类或派生类。在子类中,不仅包含了父类的属性和方法,还可以增加新的属性和方法,从而使得父类的基本特征可被所有子类对象共享。
注:类的继承并不改变类成员的访问权限,也就是说,如果父类的成员是公有的、被保护的或默认的,它的子类仍具有相应的这些特性。
/******************************************************************/ //类继承的定义格式 Class ChildClass extends FatherClass //ChildClass类继承FatherClass ,ChildClass是子类,FatherClass是父类 { //类的主体 } /******************************************************************/
JAVA的继承规则:JAVA不支持多重继承,只允许一个类直接继承另一个类,即子类只能有一个父类,也就是说,extends关键字后面只能有一个类名。尽管一个类只能有一个直接的父类,但是它可以有多个间接的父类。
2、JAVA中常见问题
在继承中常遇到下图中的问题:
以下结合代码进行分析:
产生问题的代码如下:
public class Ooprogram { // 父类 public void say(){ System.out.println("我是父类!"); } public class ChildOoprogram extends Ooprogram{ //子类继承父类 public void childsay(){ System.out.println("我是子类!"); } } public static void main(String [] args) { Ooprogram father=new Ooprogram(); //创建父类 father.say(); //父类调用父类 ChildOoprogram child=new ChildOoprogram(); // 创建子类 child.say(); //子类调用父类 child.childsay(); //子类调用子类 } }
正确的代码如下:
public class Ooprogram { // 父类 public void say(){ System.out.println("我是父类!"); } public class ChildOoprogram extends Ooprogram{ //子类继承父类 public void childsay(){ System.out.println("我是子类!"); } } public static void main(String [] args) { Ooprogram father=new Ooprogram(); //创建父类 father.say(); //父类调用父类 ChildOoprogram child=father.new ChildOoprogram(); // 创建子类 child.say(); //子类调用父类 child.childsay(); //子类调用子类 } }
它们的区别在于:如何创建子类,即:
ChildOoprogram child=new ChildOoprogram(); // 创建子类 与 ChildOoprogram child=father.new ChildOoprogram(); // 创建子类