第2章 Java编程基础——FAQ2.05 super关键字有什么含义?在哪些情况下应用?
2010-01-16 02:18
821 查看
FAQ2.05 super关键字有什么含义?在哪些情况下应用?
答:
我们继续Google以下。。。。
****************************************************************************************************************************************
super有两种用法:
其一:在构造方法内使用
如下:
public class a extends b{
public a (int t){
super(t);
}
}
其二:在其它非构造方法中使用
如下:
public class a extends b{
public a(){}
public print(String a){
super.print(a);
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.表示父类
2.调取父类成员
3.作为方法名表示父类构造方法
4.子类对象的创建:沿继承链调用父类的构造方法
例如:
public class Employee{
private String name;
privarte int age;
public String getDetails(){
return “name:”+name+”\nAge:”+age;
}
}
public class Manager extends Employee{
private String getDetails(){
//call parent method
return super.getDetails()+”\nDeparment:”+department;
}
}
///////////////////////////////////////////////////////////////////////////////
public class Manage extends Employee{
private String department;
public Manage(String name,int age;String dept){
super(name,age);
department=dept;
}
public Manage(String n,String dept){
super(name);
department=dept;
}
public Manage(String dept){ //This code fails:no super()
department=dept;
}
}
________________________________________________________________________________________________________________________________________
super.xxx用于在子类中调用与父类重名的属性。或者是被子类重写的方法。
super()是在子类中调用父类的构造方法。每个子类构造方法第一行,必须是这样调用。因为若想实例化子类对象,则必须先实例化其父类对象。
super是调用父类的构造函数
使用super调用有一些限制条件,不能在super调用中使用实例变量作为参数,而且在构造函数中,调用必须写在继承类的构造函数定义的第一行,不能在构造函数的后面使用。
this是调用的同类的构造函数。
super的限制条件同样适用于this函数。
一个构造函数定义中不能同时包含this调用和super调用,如果想同时包括的话,可以在this中首先进行super调用。
————————————————————————————————————————————————————————————————————————————————————————
成员函数中定义了和成员变量中相同的变量时,引用成员变量要用this。
构造函数中调用同一个类的其他构造函数时用this。
子类中覆盖了与父类成员变量或成员函数时,在子类中调用父类的变量或函数时要用super
子类的构造函数里调用父类的构造函数用super
包(package)是类的容器,用来保存划分的类名空间。
创建一个包是很简单的:只要包含一个package命令作为一个人Java源文件的第一句就可以了。该文件中定义的任何类将属于指定的包。
下面是package声名的一般形式:
package pkg;
接口是用来实现类间多重继承功能的,他将完成特定功能的若干属性组织成相对独立的属性集合,该属性集合就是接口。接口的定义仅仅是实现某一特定功能的对外接口和规范,而并没有真正实现这个功能。真正实现在继承这个接口的各个类中完成,因此通常把接口功能的继承成为”实现“。
异常是指程序在运行过程中的不正常情况。Java的异常处理机制则避免了这些问题,而且在处理过程中,把对运行时对错误的处理以面向对象的方式解决。在标准包java.lang中,Java定义了若干个异常类。前面的例子曾用到其中一些,这些异常一般是标准类RuntimeException的子类。因为java.lang实际上被所有的java程序引用。而且,他们不需要被包含在任何方法的throws列表中。Java语言中,这被叫做未经检查的异常(unchecked exception)。因为编译器不检查它是否处理或引发了这些异常。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
答:
我们继续Google以下。。。。
****************************************************************************************************************************************
super有两种用法:
其一:在构造方法内使用
如下:
public class a extends b{
public a (int t){
super(t);
}
}
其二:在其它非构造方法中使用
如下:
public class a extends b{
public a(){}
public print(String a){
super.print(a);
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.表示父类
2.调取父类成员
3.作为方法名表示父类构造方法
4.子类对象的创建:沿继承链调用父类的构造方法
例如:
public class Employee{
private String name;
privarte int age;
public String getDetails(){
return “name:”+name+”\nAge:”+age;
}
}
public class Manager extends Employee{
private String getDetails(){
//call parent method
return super.getDetails()+”\nDeparment:”+department;
}
}
///////////////////////////////////////////////////////////////////////////////
public class Manage extends Employee{
private String department;
public Manage(String name,int age;String dept){
super(name,age);
department=dept;
}
public Manage(String n,String dept){
super(name);
department=dept;
}
public Manage(String dept){ //This code fails:no super()
department=dept;
}
}
________________________________________________________________________________________________________________________________________
super.xxx用于在子类中调用与父类重名的属性。或者是被子类重写的方法。
super()是在子类中调用父类的构造方法。每个子类构造方法第一行,必须是这样调用。因为若想实例化子类对象,则必须先实例化其父类对象。
super是调用父类的构造函数
使用super调用有一些限制条件,不能在super调用中使用实例变量作为参数,而且在构造函数中,调用必须写在继承类的构造函数定义的第一行,不能在构造函数的后面使用。
this是调用的同类的构造函数。
super的限制条件同样适用于this函数。
一个构造函数定义中不能同时包含this调用和super调用,如果想同时包括的话,可以在this中首先进行super调用。
————————————————————————————————————————————————————————————————————————————————————————
成员函数中定义了和成员变量中相同的变量时,引用成员变量要用this。
构造函数中调用同一个类的其他构造函数时用this。
子类中覆盖了与父类成员变量或成员函数时,在子类中调用父类的变量或函数时要用super
子类的构造函数里调用父类的构造函数用super
包(package)是类的容器,用来保存划分的类名空间。
创建一个包是很简单的:只要包含一个package命令作为一个人Java源文件的第一句就可以了。该文件中定义的任何类将属于指定的包。
下面是package声名的一般形式:
package pkg;
接口是用来实现类间多重继承功能的,他将完成特定功能的若干属性组织成相对独立的属性集合,该属性集合就是接口。接口的定义仅仅是实现某一特定功能的对外接口和规范,而并没有真正实现这个功能。真正实现在继承这个接口的各个类中完成,因此通常把接口功能的继承成为”实现“。
异常是指程序在运行过程中的不正常情况。Java的异常处理机制则避免了这些问题,而且在处理过程中,把对运行时对错误的处理以面向对象的方式解决。在标准包java.lang中,Java定义了若干个异常类。前面的例子曾用到其中一些,这些异常一般是标准类RuntimeException的子类。因为java.lang实际上被所有的java程序引用。而且,他们不需要被包含在任何方法的throws列表中。Java语言中,这被叫做未经检查的异常(unchecked exception)。因为编译器不检查它是否处理或引发了这些异常。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
相关文章推荐
- 第2章 Java编程基础——FAQ2.04 this关键字有什么含义?在哪些情况下应用?
- 第2章 Java编程基础——FAQ2.07 final关键字有什么含义?具体如何应用?
- 第2章 Java编程基础——FAQ2.06 static关键字有什么含义?具体如何应用?能修饰构造方法吗?
- 第2章 Java编程基础——FAQ2.08 instanceof关键字有什么含义?如何应用?
- 第2章 Java编程基础——FAQ2.02 Java中有哪些关键字?
- 第2章 Java编程基础——FAQ2.09 Java中有哪些数据类型?
- 第2章 Java编程基础——FAQ2.13 成员变量和局部变量有什么区别?
- 第2章 Java编程基础——FAQ2.23 break和continue语句有什么区别?
- 第2章 Java编程基础——FAQ2.03 用public. protected和private修饰方法有什么区别?
- 第2章 Java编程基础——FAQ2.15 Java中有哪些运算符?优先级如何?
- 第2章 Java编程基础——FAQ2.21 ==和equals()都可用于比较两个操作数是否相等, 它们有什么区别吗?
- 第2章 Java编程基础——FAQ2.27 数组的排序算法有哪些?如何实现?
- 第2章 Java编程基础——FAQ2.11 int和Integer都可以作为整数类型, 那么它们有什么区别?
- 第2章 Java编程基础——FAQ2.17 在执行与运算时, 运算符&和&&有什么区别?
- 第2章 Java编程基础——FAQ2.22 创建String对象时, 使用String s=new String (“abc”)和String s=“abc”语句有什么区别?
- 第2章 Java编程基础——FAQ2.18 在实现x递增加1操作时, x++和++x有什么区别?
- 第2章 Java编程基础——FAQ2.19 x?y:z格式的语句表示什么意思?
- 第2章 Java编程基础——FAQ2.12 float f=3.4语句是否正确?
- 第2章 Java编程基础——FAQ2.26 如何实现数组的复制?
- 第2章 Java编程基础——FAQ2.28 如何解决ArrayIndexOutOfBounds Exception异常?