zoukankan      html  css  js  c++  java
  • [转]java构造方法的访问修饰符

    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 接口名称”,也可以不包含这些修饰符,但编译器默认就是这样,显示的包含修饰符主要是为了程序逻辑清晰。
  • 相关阅读:
    我们的回忆

    出差
    恍惚
    七夕
    K8S命令(一)——Node相关
    K8S命令(二)——查询相关
    [转载]为什么你应该(从现在开始就)写博客
    替代JDK日期的开源项目:jodatime
    使用getElementById获取xml中的指定元素
  • 原文地址:https://www.cnblogs.com/xunbu7/p/5111684.html
Copyright © 2011-2022 走看看