代码改变世界

Java 读书笔记 (八) 修饰符

2017-12-22 16:12  钱先生  阅读(416)  评论(0编辑  收藏  举报

Java语言提供了很多修饰符,主要分为以下两类:

  • 访问修饰符
  • 非访问修饰符

访问控制修饰符

  • default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象、类、接口、变量、方法。
  • private: 在同一类内可见。使用对象:变量、方法。注意:不能修饰类(外部类)。
  • public: 对所有类可见。使用对象:类、接口、变量、方法。
  • protected: 对同一包内的类和所有子类可见。使用对象 :变量、方法。注意:不能修饰类(外部类)。

       

 

默认访问修饰符 -- 不使用任何关键字

使用默认访问修饰符声明 的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为public static final,接口里的方法默认情况下访问权限为public.

如下例,变量和方法的声明可以不使用任何修饰符.

1 String version = "1.5.1";
2 boolean processOrder() {
3      return true;
4 }

 

访问控制和继承

  • 父类中声明为public的方法在子类中也必须为public.
  • 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public,不能声明为private.
  • 父类中声明为private的方法,不能够被继承

// 同一个类中不是可以用不同的修饰符吗?那声明为public的方法能不能调用声明为private的变量呢?

 

非访问修饰符

static: 用来修饰类方法和类变量。

final: 用来修饰类、方法和变量,final修饰的类不能被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract: 用来创建抽象类和抽象方法。

synchronized和volatile: 主要用于线程的编程。 

 

final变量:  被声明为final的对象的引用不能指向不同的对象,但是final对象里的数据可以被改变。即: final对象的引用不能改变,但是里面的值可以改变。

final修饰符通常和static修饰符一起使用来创建类常量。