`
huiqinbo
  • 浏览: 344795 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

super不能用在static方法面[回钦波之super用法]

阅读更多

例1: supper不用在static 方法是可用的:


super关键字用法详解:

子类可以继承父类当中的非私有成员变量和成员方法(不是以private关键字修饰的)作为自己的成员变量和成员方法,但是,如果子类中声明的成员变量与父类的成员变量同名,则子类不能继承父类当中的成员变量。如果子类中声明的成员方法与父类的成员方法同名,并且方法的返回值及参数个数与类型也相同,则子类不能继承父类的成员方法,此时称子类的成员方法覆盖了父类的成员方法。这时,如果想在子类中访问父类中被子类隐藏的成员方法或变量时,就可以使用super关键字。

super关键字主要有以下两种用途:

1.       调用父类的构造方法:子类可以调用由父类声明的构造方法,但是必须在子类的构造方法中使用super关键字类调用。其具体的语法格式如下:super([参数列表])。

class Student{

    String name;

    int number;

    public Student(String name,int number){

       this.name=name;

       this.number=number;

       System.out.println("I’m "+name+" and my number is "+number);

    }

}

class Univer_Student extends Student{

    boolean b;

    Univer_Student(String name,int number,boolean b){

//     用super()关键字调用父类中的构造方法

//     如果是用不带参数的super()则调用父类中默认的构造方法

//     注意:如果调用的是不带参数的构造方法,在父类当中没有不带参数的构造方法则会报错

       super(name,number);

       this.b=b;

       System.out.println("婚否:"+b); 

    }

}

public class Super1 {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       Univer_Student zhang=new Univer_Student("zhang",987,false);

      

 

    }

 

}

运行结果为:

I’m zhang and my number is 987

婚否:false

注意事项:如果子类的构造方法中没有显示地使用super关键字调用父类的某个构造方法,那么默认地有:super()语句,即调用父类中不带参数的构造方法。如果父类没有提供不带参数的构造方法,就会出现错误。

 

2.       操作被隐藏的成员变量和被覆盖的成员方法:如果想在子类中操作父类中被隐藏的成员变量和被覆盖的成员方法,也可以使用super关键字,具体格式如下:super.成员变量;super.成员方法([成员方法])。

class Sum{

    int n;

    float f(){

       float sum=0;

       for(int i=1;i<=n;i++){

           sum=sum+i;

       }

       return sum;

    }

}

class Average extends Sum{

    int n;

    float f(){

       float c;

       super.n=n;//调用父类中的成员变量

       c=super.f();//调用父类中的成员方法并赋给局部变量c

       return c/n;

    }

    float g(){

       float c;

       c=super.f();//调用父类中的成员方法并赋给局部变量c

       return c/2;

    }

}

public class Super2 {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

        Average aver=new Average();

        aver.n=100;

        float result_1=aver.f();

        float result_2=aver.g();

        System.out.println("result_1="+result_1);

        System.out.println("result_2="+result_2);

    }

 

}

运行结果为:

result_1=50.5

result_2=2525.0

 

 

 

 

例2:supper用在static 方法中报错:

 

package test;

public class TestInterface extends  String1{
 public int i = 6;
 public static final int a = 2;
 public static final int b = 3;
 static int bb;
 public TestInterface(){
  super();
 }
 public static void main(String args[]){
  
  System.err.println(a);
  System.err.println(super.i);      //这里会报错,翻译过来就是 supper不允许放到static 方法下面
 }
  public void i(){
  bb= super.i;
  System.err.println(super.i);     //这里不报错,这里是允许的
 }


}

 

class String1 {
    public  int i =11;
    public void test(){
     System.err.println("回钦波,你好");
    }

       
 }

分享到:
评论

相关推荐

    static、this、super、final的JAVA用法

    静态方法(static method)是一种特殊的方法,它可以在不需要创建对象的情况下被调用。Java 中的静态方法使用 static 关键字来修饰,例如 public static void main(String[] args)。静态方法通常用于提供一些实用...

    Java中static、this、super、final用法.doc

    在Java编程语言中,`static`、`this`、`super`和`final`是四个非常重要的关键字,它们各自有着特定的用途和含义。 1. **static**: 静态关键字`static`用于声明类级别的变量和方法,即静态变量和静态方法。静态变量...

    Java中static、this、super、final用法简谈

    它主要用于在方法内部引用当前对象的属性或方法,或者在构造函数中调用其他构造函数。例如: ```java class MyClass { int x; MyClass(int x) { this.x = x; // 使用 this 引用当前对象的 x 属性 } } ``` ...

    Java中static、this、super、final用法

    ### Java中static、this、super、final用法详解 #### 一、static关键字的使用 在Java编程语言中,`static`是一个非常重要的关键字,它主要用于定义类成员(包括变量和方法),使得这些成员能够在不创建类实例的...

    Java开发中static.this.super.final用法

    Java开发中的`static`, `this`, `super`, 和 `final`是四个非常重要的关键字,它们在编程中扮演着各自独特的角色。接下来我们将深入探讨这些关键字的用法。 1. **static**: - **静态方法**:如示例中所示,`static...

    JAVA\Java开发中static、this、super和final用法

    在方法或构造器内部,`this`可以用来区分实例变量和局部变量,或者调用其他构造器。 - 示例中未展示`this`的使用,但通常在创建新对象时,`this`可用于引用当前对象的属性,例如`this.myVariable = someValue;`。 ...

    static的使用方法

    本篇文章将深入探讨`static`的使用方法、原理及其在代码块中的应用。 首先,我们要理解`static`修饰符的基本含义。`static`关键字用于声明类变量(也称为静态变量)和类方法(静态方法)。这些成员是与类本身相关联...

    Java中static、this、super、final用途,用法及实例

    此外,`final`还可以用于方法参数,表示参数在方法内部不能被修改。 理解这些关键字的用法对于编写清晰、可维护的Java代码至关重要。正确使用它们可以帮助我们创建更加模块化和可扩展的程序。在开发过程中,根据...

    Java中static、this、super、final用法.docx

    "Java 中 static、this、super、final 用法详解" Java 中的 static 关键字是用于定义静态变量和静态方法的。静态变量和静态方法是属于类的,而不是属于类的对象的。它们可以被所有类的对象共享。 在 Java 中,...

    Java this super代码实例及使用方法总结

    Java this 和 super 代码实例及使用方法总结 Java 编程语言中,this 和 super 是两个非常重要的关键字,这两个关键字在面向对象编程中扮演着非常重要的角色。下面我们将详细介绍 Java 中 this 和 super 的用法。 ...

    Java中static、this、super、final用途用法及实例.docx

    ### Java中static、this、super、final用途用法及实例 #### 1. Static关键字详解 **Static**关键字是Java中的一个重要概念,主要用于定义类成员(包括方法和变量)为静态成员。静态成员有两个主要特点:一是它们...

    Java中static、this、super、final用途

    此外,`final`还常用于方法参数,表明参数不应该在方法内部被修改,提高代码可读性。 ### 示例 ```java class Parent { protected int value = 0; public Parent(int value) { this.value = value; } public...

    Java中this与super的用法

    Java 中 this 与 super 的用法 Java 中的 this 和 super 是两个非常重要的关键字,它们都是用来访问对象或父类的成员变量或...在上面的代码中,我们使用 this 和 super 关键字来访问当前对象和父类的成员变量或方法。

    super知识,包括用法和其含义.txt

    1. **super(参数)**:此用法用于在子类的构造方法中调用父类的某个特定构造方法。通常情况下,这应该是子类构造方法中的第一条语句。例如: ```java class Parent { public Parent(int x) { System.out.println...

    如何使用Static的变量和方法

    ### 如何使用Static的变量和方法 在Java编程语言中,`static`关键字是一个非常重要的概念,用于定义静态成员变量和方法。理解`static`如何工作对于任何Java开发者来说都是必不可少的,尤其是在处理多线程环境、单例...

Global site tag (gtag.js) - Google Analytics