JAVA基础知识之关键字(this/super/static/final)

一、什么是关键字

      JAVA语言中,某些被赋予了特定含义用在特定环境中的词语称为关键字,如class代表了类,extends代表了继承等

二、 关键字this

        1.this英译为本身,常用于类方法中代表调用该方法的对象      

/**
 * 定义common类
 * 
 * @author Administrator
 * 
 */
public class Common
{

    public String name;

    public String sex;

    public int age;

    /**
     * 有参构造
     */
    public Common(String name, String sex, int age)
    {
        this.name = name; //这里的this代表了调用该构造方法的对象
        
        this.sex = sex;   

        this.age = age;   
    }

    public void test()
    {

        System.out.println("名字是"+this.name);   //这里的this代表了调用该方法的对象
    }
    
    
    public static void main(String[] args)
    {
        Common common=new Common("张三", "男", 20);  //方法里的this就是等于common对象
        
        common.test();  //方法里的this就是等于common对象
        
    }

}

三、关键字super

         super代表超类对象或者超类构造函数,

/**
 * 子类继承父类Common类
 * 
 * @author Administrator
 * 
 */
public class Rector extends Common
{

    public String subsject;

    /**
     * 子类有参构造器
     * 
     * @param args
     */
    public Rector(String name, String sex, int age, String subsject)
    {
        super(name, sex, age); // 引用父类common类构造器
        super.test(); // 代表父类对象调用父类的test方法
        this.subsject = subsject;
    }
}

四、关键字static

        static的意思是静态的,可用于修饰属性和方法

1)修饰属性(位于修饰符之后,返回类型之前)

            1.static修饰的属性常称为静态属性(静态资源)或者类变量,其可以通过类.属性名直接调用

            2.静态属性为该类的所有对象(包含子类对象)共用,即存在Common类及静态资源age,那么a对象的age属性和b对象的age属性是同一个,任何一个对静态属性修改,其余对象都会受到影响

/**
 * 定义common类
 * 
 * @author Administrator
 * 
 */
public class Common
{

    public  String name;

    public static int age=1;  //初始化赋值
 
    public static void main(String[] args)
    {
        System.out.println("输出静态属性:"+Common.age);  //类直接调用
        
        Common a=new Common();
        
        Common b=new Common();

        System.out.println("输出对象a的age是:"+a.age); 
        
        System.out.println("输出对象b的age是: "+b.age); 
        
        a.age=30;  //对a的age进行重新赋值
        
        System.out.println("输出修改后对象a的age是: "+a.age);
        
        System.out.println("输出修改后对象b的age是: "+b.age);
        
        b.age=60;   //对b的age重新赋值
        
        Common c=new Common(); //生成新的对象
        
        System.out.println("新对象c的age是: "+c.age);
          
    }
  
}

执行结果:任何对象的对静态资源的修改都会影响到其它对象,因此静态资源是所有对象共有的



2)修饰方法(位于修饰符之后,返回类型之前)  

        1.static修饰的方法被称为静态方法或者类方法,该方法可通过类.方法名直接调用,而不需要实例化对象来调用(节省内存)

/**
 * 定义common类
 * 
 * @author Administrator
 * 
 */
public class Common
{

    /**
     * 静态方法
     * @param args
     */
    public static void test()
    {
        
        System.out.println("这是一个静态方法");

    }
 
    public static void main(String[] args)
    {
        
        Common.test(); //可直接类.方法名调用
          
    }
  
}

        2.static方法中不能引用非static变量,否则编译报错


五、关键字final

        final代表了永恒的,不可改变的,可用于修饰类、变量、方法

1)final修饰类

        1.final修饰的类中的方法默认为final修饰,属性则没有

/**
 * 定义common为final类
 * 
 * @author Administrator
 * 
 */
public final class Common
{

    public  String name;

    public static int age=1;  //初始化赋值
    
    /**
     * 方法默认为final修饰,只是隐藏掉了,编译后会出来
     */
  public void test()
  {
      System.out.println("这是一个final方法");
  } 
} 

      2.final修饰的类不可以被继承即不可被改变,如String类就是final类



2)final修饰属性

         1.final修饰的属性称为常量且必须初始化赋值,否则编译报错

        2.常量的值是不可以被改变的,否则编译报错

        3.其常跟static一起修饰变量代表了类常量,常用于项目中某些常量的设置

/**
 * 定义common为final类
 * 
 * @author Administrator
 * 
 */
public  class Common
{

    public final String name="test"; // 常量

    public final int age = 5; // 常量

   public void test()
   {
       age=age+1;    //报错
   }
}

3)final修饰方法

     目前暂时没有用到final修饰方法这块,其本质就是不能被子类覆盖,因此若类中有某个方法不想被子类覆盖重写定义,那么可以加上final关键字修饰,保证该方法只有该类可以调用即可




      



猜你喜欢

转载自blog.csdn.net/ai_bao_zi/article/details/80927141