正文:
      
       下面的表格列出了java中修饰符的一些信息:
修饰符名称 类型 变量 方法
abstract 非访问控制符 抽象类          -- 抽象方法
final 非访问控制符 最终类 最终变量 最终方法
static 非访问控制符           -- 静态变量 静态方法
volatile 非访问控制符           -- 易失变量              --
native 非访问控制符           --         -- 本地方法
synchronized 非访问控制符           --         -- 同步方法
public 访问控制符          有          有            有
默认修饰符 访问控制符          有        有            有
private 访问控制符          无        有            有
protected 访问控制符          无        有            有

1.非访问控制符

1.1类修饰符


1.1.1 抽象类:abstract

                
          在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。使用抽象类需要注意以下几点:
          a.抽象类只能作为基类被继承,而不能实例化对象;
          b.抽象类可以没有抽象方法,但有抽象方法的类必须是抽象类;
          c.抽象类既可以有抽象方法,也可以有非抽象方法。
          看下面这个例子:
         
 abstract class TestAbstract {
public abstract void say();
public void tell(){
System.out.println("我是抽象类的非抽象方法tell()" );
};
} public class Son extends TestAbstract{
public void say() {
System. out.println( "我必须实现父类的抽象方法say()" );
}
public static void main(String args[]){
Son son = new Son();
son.say();
son.tell();
}
}


1.1.2 最终类:final

          被final修饰的类不可以有子类,即不能被继承。
          final修饰符和abstract修饰符不可以同时用来修饰一个类,因为abstract是抽象类,必须被子类继承来实现他的抽象方法,但final类有不能被继承。


1.2 变量修饰符

1.2.1 静态变量:static

       静态变量属于整个类,而不属于这个类的某一个对象,对于类中的非静态变量,类的每一个对象都有一份自己的拷贝,而静态变量所有对象都使用同一份拷贝。所以在对象被实例化之前我们就可以操作它的静态变量:
      
public class TestStatic {
static String name = "静态变量"; public static void main(String[] args) {
System. out.println(TestStatic. name);
} }

   
     static与一对大括号组成的语句组称为静态初始化器,作用是加载时初始化类的静态变量。
     静态初始化器不同于构造函数:
      1.构造函数是对新创建的对象进行初始化,而静态初始化器是对类自身进行初始化;
      2.出于1的原因,构造函数是在new一个对象的时候由系统自动执行,而静态初始化器是它所在的类加载到内存是自动执行;
     下面这个例子中,main函数中没有进行实例化对象,但运行该类时会打印“我是静态初始化器”
   
public class TestStatic {

static
{
System.out.println("我是静态初始化器");
} public static void main(String[] args) { }
}


1.2.2  最终变量:final

          当用final修饰变量时,即说明该变量其实是一个常量,而且不能被修改。
       
final int N = 100;

    如果再执行下面语句会报错:
          N =
0;
          由于此时对所有对象来说该常量值固定,所以该常量一般定义为static类型的,以节省内存:
         
 static final int N = 100;

   

1.2.3 易失变量:volatile

          volatile常用在多线程的问题中,小编还没用过,大家可以自己查查资料。


1.3 方法修饰符

1.3.1抽象方法:abstract

            就像前边抽象类讲的一样,抽象方法主要是提供一个统一的接口,使所有子类对外呈现一个相同名字的方法。
            抽象方法只有方法头,没有方法体。
            抽象方法必须写在抽象类里边。
 

1.3.2静态方法:static

               被static修饰的方法是整个类的方法,而不专属于某一个对象,而非静态方法是对象的方法。调用静态方法时使用类名直接调用:
                
 public class TestStatic {
static void method(){
System. out.println( "我是静态方法" );
}
public static void main(String[] args) {
TestStatic.method();
}
}


1.3.3 最终方法:final

                  被final修饰的方法,功能和内部语句不能修改,不能被继承,即父类的final方法不可以被子类重写,如下面的写法是错误的。
              
 class Parents{
final void say(){
System. out.println( "我不能被继承" );
}
}
public class TestFinal extends Parents{
void say(){ //这个方法其实不可以被继承,这样写会报错
System. out.println( "我可以被继承" );
}
}

1.3.4 本地方法:native

              native主要用来声明该方法的方法体是由其他语言在程序外部编写的,小编没用过。
  

1.3.5 同步方法:synchronized

                synchronized修饰符主要用于多线程共存的程序中的协调和同步。
                如果synchronized修饰的是一个静态方法,则方法被调用执行前把对应当前类的对象加锁,若修饰的是非静态方法,则方法被调用执行前,把当前对象加锁。

2.访问控制符

    
范围 public private protected 默认
同一类中可见
同一包中对子类可见
同一包中对非子类可见
不同包对子类可见
不同包对非子类可见

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

巩固java(三)---java修饰符的更多相关文章

  1. 关于Java的权限修饰符(public,private,protected,默认friendly)

    以前对访问修饰符总是模棱两可,让自己仔细解释也是经常说不很清楚.这次要彻底的搞清楚. 现在总结如下: 一.概括总结 各个访问修饰符对不同包及其子类,非子类的访问权限 Java访问权限修饰符包含四个:p ...

  2. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  3. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  4. 深入理解Java的protected修饰符

    其实Java的protected修饰符,权限定义的很微妙,大致有以下几种: (1)protected控制符用于修饰方法和成员变量: (2)一个类的protected方法或成员变量,在包外是不能通过该类 ...

  5. java访问权限修饰符

    作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...

  6. Java中各种修饰符与访问修饰符

    Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...

  7. Java中访问修饰符public、private、protecte、default

    Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...

  8. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  9. 对于Java中权限修饰符的理解

    老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...

  10. Java变量的修饰符

    1.public public的类.类属变量及方法,包内及包外的任何类均可以访问: 2.protect protected的类.类属变量及方法,包内的任何类,及包外的那些继承了此类的子类才能访问: 3 ...

随机推荐

  1. EBS form 之间跳转实现(form 关闭)

    实现 form CUXOMWB 使用 app_navigate.execute 打开 form CUXOEXPRAVA :然后 FROM CUXOEXPRAVA 上点击按钮 跳回from CUXOMW ...

  2. linu下C语言之BMP图片操作编程(上)

    BMP文件格式,也被称为位图图像文件或与设备无关的位图文件格式(DIB)或者只是一个位图,是 一个光栅图形 图像文件格式使用 来存储位图,数字,图片,独立的显示设备. 微软已经定义了一个特定的表示颜色 ...

  3. 坚持自己的追求,迎来 “中国系统开发网” (CSDN)的专访

    坚持自己的追求,迎来 "中国系统开发网" (CSDN)的专访: 专访马根峰:海量数据处理与分析大师的中国本土程序员" http://www.csdn.net/articl ...

  4. 和菜鸟一起学linux之upnp协议的学习记录

    UPnP全名是Universal Plug and Play,主要是微软在推行的一个标准.简单的来说,UPnP 最大的愿景就是希望任何设备只要一接上网络,所有在网络上的设备马上就能知道有新设备加入,这 ...

  5. 运行ant脚本(转载)

    http://blog.csdn.net/linwei_1029/article/details/5809801 运行ANT脚本的步骤 1.右击我的电脑-->属性-->高级-->环境 ...

  6. Web服务cxf框架发布2

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本人声明.否则将追究法律责任. 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/ ...

  7. HashMap 实现原理

    深入Java集合学习系列:HashMap的实现原理   参考文献 引用文献:深入Java集合学习系列:HashMap的实现原理,大部分参考这篇博客,只对其中进行稍微修改 自己曾经写过的:Hashmap ...

  8. Day13 CSS的与应用

    老师博客:http://www.cnblogs.com/yuanchenqi/articles/6856399.html 1,CSS选择器的应用: CSS规则有两个主要部分构成:选择器,以及一条或多条 ...

  9. quicksort(java版)

    相信大家都知道几种排序算法,比如说冒泡排序,选择排序,插入排序等等,这些个算法都不是很难,自己多多理解理解就能掌握了,而今天我们要谈的就是重头戏就是快速排序. 引用大牛的思想来对排序算法解释一下.(文 ...

  10. unity零基础开始学习做游戏(六)背景给我“滚”~

    -------小基原创,转载请给我一个面子 一望无际的...空旷场景,看着实在是难受,不如添加些背景吧.如果要真的想好好设计关卡背景的话,最好是做一个地图编辑器,不过做开发工具毕竟有点点复杂且枯燥,以 ...