http://my.oschina.net/u/1464678/blog/210359

1.       类(class)

可见性修饰符: public—在所有类中可见,在其他包中可以用import导入。

                             缺省—就是没有修饰符,在同一个包中的类中可见,在其他包中不能用import导入。

              修饰符:final—终态类,表示该类不能被继承

abstract抽象类,不能新建对象

2.       变量(variable)

Java中变量有两种,方法变量和字段变量

方法变量只能用一个修饰符:final—表示常量,不能修改

下面是字段变量的修饰符

可见性修饰符:public—在任何类中可见

protected—       在子类中或同一个包中可见

private—只在本类中可见,子类中也不可见

                                    缺省—在同一个包中可见,子类不在一个包中,子类中也不可见  

        修饰符:static—静态变量,被类的所有实例共享

final—常量,定义后不能修改

*transient—告诉编译器,在类对象序列化的时候,此变量不需要持久保存

*volatile—指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理

这两带*的不是很常用,但也是Java的修饰符,我也不是很清楚

3.      方法(method)

可见性修饰符:public—在任何类中可见

protected—在子类中或同一个包中可见

private—只在本类中可见,子类中也不可见

                              缺省—在同一个包中可见,子类不在一个包中,子类中也不可见

修饰符:   static—静态方法,并不需要创建类的实例就可以访问静态方法

final—常方法,所有子类不能覆盖该方法,但可以重载

                      abstract—抽象方法,在抽象类中没有实现的方法

                      native—本地方法,参见Java Native Interface(JNI)

                             synchronized —在多线程中,synchronized方法调用时,其他所有方法不能调用该方法

4.       接口(interface)

可见性修饰符:public—所有类中可见

缺省—同一个包中可见

接口中的变量总是需要定义为“ public static final 接口名称”,但可以不包含这些修饰符,编译器默认就是这样

因为接口是不可能有直接实例的,那样的话也就是不可能修改(final),也不可能通过实例访问的(static)。

接口中的方法只能使用publicabstract修饰符

==================================================================================================

public:可以被任何类访问。
final:使用些修饰符的类不可以被继承。
abstract:如果要使用abstract类,需要建立一个继承自它的新类,来实现其中的抽象方法。

变量:
1,Java中没有全局变量,只有方法变量、实例变量(类中非静态变量)、类变量(类中静态变量);
2,方法中的变量不可以有访问修饰符,所以访问修饰符只是针对类中定义的变量;
3,声明实例变量时,如果没有赋初值,将会被初使化为Null(引用类型)或是0、false(原始类型);
4,可以通过实例变量初使化器来初使化较复杂的实例变量,实例变量初使化器是一个用{}包含的语句块,在类的构造器被 调用时运行,运行于父类构造器之后,构造器之前;
5,类变量(静态变量)也可以通过变量初始化器进行初始化,类变量的初使化器是一个用static{}包括起来的语句块,而且只可以被初使化一次。
 
访问修饰符:
public:可以被任何类访问。
protected:可以被同一包中的所有类访问;也可以被子类访问,即使子类没有在同一包内。
private:只能被当前类中的方法访问。
缺省:无访问修饰符,可以被同一包中的所有类访问;如果子类没有在同一包中,不可访问。
 
修饰符:
static:静态变量(又称为类变量,实例变量等),可以被类的所有实例所共享,而且在不创建类的实例的情况下也可以对其进行访问。
final:常量,其值只能分配一次,而且不可更改;注意不要使用const,虽然它和C、C++中的const关键字含义一样。
transient:即告诉编译器,在该类的对象进行序列化的时候,这个变量不需要持久保存。这么做的主要原因是这个变量可以通过其它的变量来获取,使用它主要是从性能的角度考虑。
volatile:指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确地处理。
 
方法:
1,类的构造方法不能有修饰符、返回类型和throws子句
2,类的构造器方法被调用时,它首先调用父类的构造器方法,然后运行实例变量和静态变量的初使化器,然后才运行该类构造器本身。
3,如果构造器方法没有显示调用一个父类的构造器,那么编译器会为其自动加上一个默认的super(),而父类若没有默认的无参数构造器,编译器就会报错。super()必须是构造器方法的第一个子句。
4,注意理解private类构造器方法使用的技巧。
 
static:静态方法(又称为类方法、以及实例方法等),它提供不依赖于类实例的服务,也就是说,并不需要创建类实例就可以访问静态方法。
final:防止任何子类重载该方法;注意不要使用const,虽然它和C、C++中的const关键字含义一样。
abstract:抽象方法,类中已声明但没有实现的方法,不能将static方法、final方法以及构造器方法声明为abstract。
native:用该修饰符修饰的方法在类中并没有实现,大多数情况下这类方法的实现是由C或C++编写的。可以参见Sun的Java Native接口(JNI),JNI提供了运行时加载一个native方法的实现,并将其与一个Java类关联。
synchronized:多线程支持,当一个线程调用该方法时,就会为这个对象加一个锁,从而其它线程就不可以再次调用这个方法,直到前一个线程将其释放。

接口:
1,接口不能定义任何其声明方法的实现。
2,接口中的变量总是需要定义为“public static final 接口名称”,也可以不包含这些修饰符,但编译器默认就是这样,显示的包含修饰符主要是为了程序逻辑清晰。

[转]java构造方法的访问修饰符的更多相关文章

  1. 分享知识-快乐自己:java 中的访问修饰符

    1):Java中的访问修饰符: Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节. 访问控制 ...

  2. Java基础——protected访问修饰符探讨

    Java基础——protected访问修饰符探讨 根据官方说法:(如图) protected修饰符是可以修饰其他包中的子孙类的,但是我做了个实验,结果发现了一个有趣的现象! 具体请往下看: packa ...

  3. Java继承和访问修饰符

    继承 概念:为了提取两个类中公共代码,可以使用继承抽取重复性的代码到一个公共类中,这个公共的类称为父类(super class).继承于父类的类称为子类(sub class). 关键字     ext ...

  4. java中的访问修饰符

    Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符.其中package代表缺省的访问权限,具体到代码中就是不写任何修饰符的 ...

  5. JAVA中的访问修饰符和包

    一.JAVA访问修饰符 访问修饰符,用来控制类中成员的可见性 有四个访问修饰符,分别是:default,private,public,protected 1.default(默认):默认权限,不用写的 ...

  6. java类的访问修饰符

    1.java中外部类的访问修饰符有如下四种: public,默认,abstract,final // public,默认,abstract,final. public class Test1 {} c ...

  7. java中的访问修饰符详解

    主要讲述一下java中protected的修饰控制范围. 在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类.开发类.定义类的过程.类里面可 ...

  8. Java——类的访问修饰符

    1.java中外部类的访问修饰符有如下四种: public,默认,abstract,final // public,默认,abstract,final. public class Test1 {} c ...

  9. java四种访问修饰符及各自的权限

    1.public,即共有的,是访问权限限制最宽的修饰符.被public修饰的类.属性.及方法不仅可以跨类访问,而且可以跨包访问. 2. protected,即保护访问权限,是介于public和priv ...

随机推荐

  1. Excel教程(11) - 查找和引用函数

    ADDRESS 用途:以文字形式返回对工作簿中某一单元格的引用.    语法: sheADDRESS(row_num,column_num,abs_num,a1,et_text) 参数:Row_num ...

  2. document.onreadystatechange()来判断页面加载完

    document.onreadystatechange = subSomething;//当页面加载状态改变的时候执行这个方法. function subSomething() {  if(docum ...

  3. Nginx 安装(CentOS )

    一.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二.首先要安装 PCRE ...

  4. 存储过程sql语句

    select count(virtualacc) into v_count  from T_ATMMONITOR WHERE virtualacc = v_number; 用于存储过程中,是把coun ...

  5. IOS应用的国际化

    IOS应用的国际化,主要分为3个部分: Info.plist 文件的国际化 .xib文件的国际化 .m文件的国际化 下面我就来一一说明. Info.plist 文件的国际化我们使用Xcode 4.5 ...

  6. 【第五篇】androidEventbus源代码阅读和分析之unregister代码分析

    代码里面注销eventbus一般我们会在onDestory里面这么写: EventBus.getDefault().unregister(this); 然后走到unregister里面去看看: /** ...

  7. Logger日志管理工具类

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  8. 升级3.2.3后 could not find driver

    求解,之前一切正常,升级3.2.3后提示找不到数据库驱动我用的是mysql,也没有设置DB_DSN错误位置FILE: C:\Users\Administrator\workspace\test\Thi ...

  9. 其他应用和技巧-用JS实现的抽奖程序

    -------------------------------- <script type="text/javascript">            var data ...

  10. hdu_3562_B-number(记忆化搜索|数位DP)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3652 题意:给你一个n,为比n小的能整除13并数字中有13的数有多少个 题解:记忆化搜索:记dp[i] ...