java中public,static,private,final,this,protected等关键字的概念

都大三了仍对对这些概念中的某些不太熟悉,或者是记不住,今天特地翻书本去网上找资料,把这些给整理记录下来,以便以后需要用到的时候查看。


一、访问权限

所谓访问权限是指对象是否可以通过“.”运算符操作自己的变量或通过“.”运算符使用类中的方法。访问限制修饰符有private、protected和public。注意:在编写类的时候,类中的实例方法总是可以操作该类中的实例变量和类变量;类方法总是可以操作该类中的类变量,与访问限制符没有任何关系。

1.private

用private修饰的成员变量(方法)称为私有变量(私有方法),例:

class Dream
{
    private float price;
    private float add(float p1,float p2)
    {
        return p1+p2;
    }
}

当在另一个类中用Dream类实例化一个对象后,该对象不能访问自己的私有变量(私有方法)。

2.public

用public修饰的成员变量(方法)称为共有变量(共有方法),例:

class Dream
{
    public float price;
    public float add(float p1,float p2)
    {
        return p1+p2;
    }
}

当在另一个类中用Dream类实例化一个对象后,该对象能访问自己的共有变量(共有方法)。如果Dream类中某个成员是public类变量(public方法),在另外一个类中也可以通过类名Dream来操作Dream的这个成员变量(方法)。类声明时,在class前加上public,就是一个public类,可以在任何另外一个类中使用public类创建对象。

3.protected

用protected修饰的成员变量(方法)称为受保护的成员变量(受保护的方法),例:

class Dream
{
    protected float price;
    protected float add(float p1,float p2)
    {
        return p1+p2;
    }
}

在任何一个与Dream类同一包名的类中,可以通过Dream类的类名访问Dream类的protected类变量(protected类方法)。

4.友好类,友好方法,友好变量

如果一个类(成员变量)(方法)不加修饰符,该类(成员变量)(方法)被成为友好类(友好变量)(友好方法),在使用另外一个类中使用友好类创建对象时,要保证它们在同一个包中。在另外一个类中访问友好变量(友好方法)时,需要这两个类在同一包中。

注:(1)不能用protected和private修饰类。

      (2)访问权限修饰符从高到底的顺序是:public,protected,友好,private。

     (3)protected和友好的区别:在子类继承父类时,子类只继承父类中的protected和public访问权限的成员变量(方法),作为子类的成员变量(方法)。而友好的却不会被继承。

二、其他一些常用关键字

1.super

(1)用super操作被隐藏的成员变量和方法。子类一旦隐藏了继承的成员变量(方法),那么子类创建的对象就不再拥有该变量(方法),该变量(方法)将归为super拥有。如果子类想使用隐藏的成员变量(方法),就需要super,例:super.name、super.play()就是访问被子类隐藏的成员变量name和方法play()。

(2)使用super调用父类的构造方法。由于子类不继承父类的构造方法,因此子类在其构造方法中需使用super来调用父类的构造方法,而且super必须是子类构造方法中的第一条语句,即如果在子类的构造方法中没有明显的写出super关键字来调用父类的某个构造方法那么默认有:super();如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法(无参的构造方法),因此当我们在父类里定义多个构造方法时,应当包括一个无参的构造方法,以防止子类省略super时出错。

2.this

(1)在构造方法中使用this,this出现在类的构造方法中时,代表使用该构造方法创建的对象

(2)在实例方法中使用this,实例方法必须只能通过对象来调用,不能用类名来调用。当this关键字出现在实例方法中时,代表正在调用该方法的当前对象。但,this不能出现在类方法中。

注:(1)在声明成员变量(方法),用static给予修饰的称作类变量(方法),否则称作实例变量(类变量(方法)也称为static变量(方法),静态变量(方法))。

 3.final

final类不能被继承,即不能有子类;final方法,那么这个方法不允许子类重写,也就是说不允许子类隐藏可以继承的final方法(只能继承,不许做任何修改);final常量,如果成员变量或局部变量被修饰为final,就是常量,也就是不可变化的变量->常量。

 

 

你可能感兴趣的:(Java)