"super"关键字代表父类对象。通过使用super关键字,可以访问父类的属性或方法,也可以在子类构造方法中调用父类的构造方法,以便初始化父类继承的属性。
通过下面的例子来详细说明 super 的用法
- /**
- * Person 父类
- */
- package cn.yjlblog.www;
- public class Person {
- int a;
- int b;
- public Person(int a,int b){
- this.a = a;
- this.b = b;
- }
- public void fun(){
- System.out.println("Pentakill!");
- }
- }
- /**
- * Student 子类
- */
- package cn.yjlblog.www;
- public class Student extends Person {
- int c;
- int d;
- //构造方法
- //在这个构造方法中,因为子类调用父类的所有的构造方法,在子类student中又因为新生成
- //了c 、d 两个新的属性,所以构造的方法中一共有a,b,c,d四个参数。
- public Student(int a, int b, int c, int d) {
- super(a, b);//用super来调用父类的的指定的构造方法,注意这个地方调用的是方法,不是属性。
- this.c = c;
- this.d = d;
- }
- public void fun()//方法的重新,和子类中的方法是一样的
- {
- System.out.println("double kill!");
- }
- public void fun1(){//这是在子类中新定义的方法,父类中是没有的
- fun();//调用的fun()方法是自己的fun 方法(重写的fun()方法)
- super.fun();//但是想要用父类的fun方法,就用super 来调用
- }
- }
- /**
- * 小结:
- * 1.super 有两个用法,一个是可以调用父类指定的 构造方法;另外的一个是调用父类的 方法,其实在這里需要
- * 注意的是,方法和构造方法的区别
- * 2。super 的用法可以和this的用法比对来看
- */
- package cn.yjlblog.www;
- public class Test {
- int a;//成员变量
- int b;
- //构造方法(带参数)
- public Test(int a,int b){//局部变量
- this.a = a;
- this.b = b;
- }
- // 构造方法的重载(不带参数)
- public Test(){
- this(10,20);
- }//在这个方法中,不带参数的构造方法 使用 this 关键字调用了 带参数的构造方法
- }
用来修饰类、方法和变量,其含义是“不可改变的、最终的”。
,在定义时必须给予初始值,变量一旦初始化,将不能改变。
- 常量
对于一个变量而言final定义的是常量,例如
- final int c = 10;//定义好了常量就不能更改
- //在上述的代码中 this.c = c 就会出错
对于一个方法来说:
- public final void fun(){
- System.out.println("Pentakill!");
- }
- //在父类 Person 中的fun()方法中,如果给加上final ,子类的重写就胡出错,也就是说,父类的方法加上
- //final 后,就不能被重写。
对于一个类来说:
- public fianl class Person {
- int a;
- int b;
- public Person(int a, int b) {
- this.a = a;
- this.b = b;
- }
- public void fun() {
- System.out.println("Pentakill!");
- }
- }
- //当final来修饰类的时候,则说明此类不能再被继承,也就是说此类便是最后的一代,不能再生儿子了enmmmmm....
- //此时,在这个例子中,子类 Person 就会报错。
Object类是所有类的顶级父类,在Java体系中,所有类的都是直接或间接的继承了Object类。Object类包含了所有Java类中的公告属性和方法,这些属性和方法在任何类中均可以直接使用。
```
package cn.yjlblog.www;
public class Test2 {
public static void main(String[] args) {
Object ob1 = new Object();
Object ob2 = new Object();
System.out.println(ob1.equals(ob2));//输出false
//因为两个空间的首地址不一样,所以不相等
//ob2 = ob1; 如果加上这个话就是true,指向了同一个地址
- }
}
```
来源: http://www.cnblogs.com/yjlblog/p/7665700.html