精华内容
下载资源
问答
  • Java 构造方法的修饰符

    千次阅读 2017-10-07 10:37:08
    不同于普通方法,构造方法(器)不能是abstract, static, final, native, strictfp, 或者synchronized

    不同于普通方法,构造方法(器)不能是abstract, static, final, native, strictfp, 或者synchronized的。原因如下:

    1. 构造器不是通过继承得到的,所以没有必要把它声明为final的。
    2. 同理,一个抽象的构造器将永远不会被实现。(所以也不能声明为abstract的)
    3. 构造器总是关联一个对象而被调用,所以把它声明为static是没有意义的。
    4. 没有实际的需要把构造器定义成同步的,因为它将会在构造的时候锁住该对象,直到所有的构造器完成它们的工作,这个构造的过程对其它线程来说,通常是不可访问的。 (synchronized)
    5. 本地化的方法情况特别复杂,所以JVM调用起来非常麻烦,需要考虑很多种情况,没有native关键字的情况下,JVM实现起来比较容易。

    参考:http://www.cnblogs.com/plmnko/archive/2010/10/16/1852871.html

    展开全文
  • 构造方法 静态修饰符

    千次阅读 2013-11-02 22:36:17
    只要在类里面定义了一个构造方法有参数 无参数的构造方法就被覆盖了 调用必须加上参数 只要类里面有一个构造函数 默认构造函数就会不存在 就被覆盖 构造方法和其他方法略有不同 构造方法是对象一建立就运行
    构造方法
    特点 类名与方法名相同
    不用定义返回值类型
    不可用写return语句


    构造方法
    作用:
        给对象进行初始化
    默认的构造方法可以重载的形式出现

    只要在类里面定义了一个构造方法有参数的 无参数的构造方法就被覆盖了
    调用必须加上参数
    只要类里面有一个构造函数 默认构造函数就会不存在 就被覆盖

    构造方法和其他方法略有不同
    构造方法是对象一建立就运行,给对象初始化
    而普通方法是对象调用才运行,是给对象添加功能。

    什么时候定义构造方法
    当分析事物,该事物存在一定的特性和行为,那么将这些内容定义在构造方法中。

    构造代码块
    作用给对象进行初始化
    构造代码块只能有一个 统一初始化 执行顺序 先构造代码块 在构造方法
    方法属性顺序不是固定的 为了便于阅读 按一定的顺序写

    对象建立就运行,而且优先于构造方法
    构造代码块是对于所有的对象进行统一的初始化
    而构造方法是对给对应的对象进行初始化

    this
    当定义类中的功能时,该方法内部需要用到调用该方法的对象时。
    这时用this 代表对象 this只能在本类中使用 main方法不属于类
    在main方法中不能使用this
    但凡功能内部使用到了本类对象都有this调用
    this可以调用属性 方法 构造方法
    this 调用构造方法只能在第一行出现

    this 用于类构造方法之间调用
    this 构造方法中调用只能放在开头处
    原因:初始化放在类中所有动作之前,初始化先执行

    static
    用于修饰成员变量与方法
    static 修饰的方法和变量放在方法区(共享区)
    特点随着类的加载而加载
    静态随着类的消失而消失,他的生命周期最长
    属性方法 对象的组成部分
    对象没有属性方法就没有
    属性方法没有被static 修饰 则属于对象 没有对象就没有方法和属性
    属性方法 加上static 属于类 不属于对象
    在同一个文件中可以直接调用方法不用写类名
    在不同文件中 需要导入包 而且需要类名.调用静态方法。

    常量静态的
    工具方法静态的 加密解密 工具类里面的工具方法 加密解密方法 静态方法修饰
    操作频繁。
    没有特殊情况不用static
    优先于对象存在
        明确一点 静态先存在 对象后存在
    被所有对象所共享 应该被类名调用
    在静态方法中不能调用非静态属性和方法
    静态方法只能调用静态属性或静态方法
    非静态的方法能调用静态的属性和方法
    静态变量

    生命周期
    静态变量生命周期最长,随着类的消失而消失
    对象变量生命周期随着对象的消失而消失



    静态的使用注意事项
    1.静态方法只能访问静态变量
     非静态方法既可以访问静态变量,也可以访问非静态变量
    2 静态方法不可用调用this 或super 因为静态优先于对象存在

    静态对象利弊
    1优势 对对象的共享数据进行单独的空间存储,节省空间,
    没必要对每个对象都存储一份,可以直接被类名所调用
    2.劣势 生命周期过长,访问局限性(静态方法无法访问非静态变量)
    展开全文
  • 派生类的构造方法在学习如何定义类时候,我们学会了定义类之后如何使用构造方法来初始化对象。在继承关系中至少有两个类,那么是使用父类还是子类的构造方法来初始化对象呢?在子类中调用父类默认构造方法(无参...

    派生类的构造方法

    在学习如何定义类的时候,我们学会了定义类之后如何使用构造方法来初始化对象。在继承关系中至少有两个类,那么是使用父类还是子类的构造方法来初始化对象呢?

    在子类中调用父类的默认构造方法(无参)

    public class MyDerivedClass{
        public MyDerivedClass:base(){
            //do something
        }
    }

    在这里base可以直接不写,因为编译器默认会调用父类中的默认构造方法。

    调用有参数的构造方法

    public class MyDerivedClass{
        public MyDerivedClass(string name):base(name){
            //do something
        }
    }

    在这里,base(name)不能省略,因为子类要将参数传给父类。
    例子:

    class BaseClass
        {
            private int x;
            public BaseClass()
            {
                Console.WriteLine("这里是父类的无参构造函数");
            }
    
            public BaseClass(int x)
            {
                this.x = x;
                Console.WriteLine("x赋值完成");
            }
        }
    
    class DerivedClass:BaseClass
        {
            private int y;
            public DerivedClass():base()  //base()可以不写,编译器会默认使用父类的构造函数
            {
                Console.WriteLine("这里是子类的构造函数");
            }
    
            public DerivedClass(int x,int y):base(x)
            {
                this.y = y;
                Console.WriteLine("y赋值完成");
            }
        }

    在继承中,使用子类初始化对象时,会先调用父类的构造方法,再调用子类的构造方法。


    修饰符

    写程序时,例如主函数
    public static void main(string[] args){}
    我们会发现public、static都是用来修饰这个函数的,那么他们的作用具体是什么呢?
    修饰符是用来修饰类型或成员的关键字,并且可以指定方法的可见性。

    下图是各个修饰符的作用和作用对象
    这里写图片描述
    这里面有几个修饰符需要重视。

    • public:表示字段和方法能够通过对象去访问。
    • private:表示字段和方法只能在类模板内部访问。
    • protected:当没有继承关系时,它的作用和private是一样的。
    • public class和class的区别:前者可以在别的项目下访问,后者不行。
    • static:static修饰的被叫做静态字段或静态方法,当我们构造对象的时候,对象中只包含了普通字段,不包括静态字段,静态字段只能够通过类名来访问。
    展开全文
  • 构造方法可以用哪个访问修饰符(private\protected\public\默认)? 如果用private修饰还是构造方法吗?是普通方法吗?
  • 1.类(class) 可见性修饰符:public—在所有类中可见,在其他包中可以用import导入。 缺省—就是没有修饰符,在同一个包中类中可见,在其他包中不能用import导入。 修饰符:fi...

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

    转载于:https://www.cnblogs.com/xunbu7/p/5111684.html

    展开全文
  • 这两带*的不是很常用,但也是Java的修饰符,我也不是很清楚 3 .   方法 (method)   可见性修饰符: public — 在任何类中可见   protected —在子类中或同一个包中可见   private —只在本类...
  • 修饰符: 权限修饰符:private,默认,protected, public 状态修饰符:static,final 抽象修饰符:abstract 类: 权限修饰符:默认修饰符,public ...构造方法: 权限修饰符:private,默认,p
  • 这里写自定义目录标题欢迎使用Markdown编辑器新改变功能快捷键static如何改变文本样式插入链接与图片如何插入一段漂亮代码片生成一个适合你列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个...
  • 他们有什么区别属性属性和字段区别构造方法是什么?什么时候调用?特点小结 前言 叙述 修饰符 Java有哪些修饰符? public protected default private 他们有什么区别 default (即默认,什么也不写): 在同一包...
  • 访问修饰符 访问修饰符的种类(按修饰范围大小排序): public>protected>default>private 在开发中,用private 和public 最多,如果是默认的则是default,定义属性是不能写出来 ...2.构造方法的...
  • 访问修饰符(修饰 类、方法、属性):public private protected 和 缺省。 修饰符的作用范围: 修饰符 本类 子类 同一包 不同包 public √ √ √ √ private √
  • (一)类的修饰符 PUBLIC | PROTECTED | PRIVATE | ABSTRACT | STATIC | FINAL | STRICT; (二)接口的修饰符 PUBLIC | PROTECTED | PRIVATE | ...(三)构造的修饰符 PUBLIC | PROTECTED | PRIVATE; (四)属
  • 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符) (如有错误,欢迎指正,感谢!) 类 类是面向对象程序设计中概念,实现信息封装 概念: 类就是拥有相等行为和相同属性对象集合。(是一种...
  • 众所周知,Scala 是运行于Java平台(Java虚拟机),那么Scala程序编译之后会生成对应字节码文件,我们将字节码文件反编译成Java文件即可知Scala 为我们都做了什么. Scala 源代码 class Test4(a: String) class...
  • import static java.lang.Math.abs; public class Test{ public static void main(String[] args){ System.out.println(abs(-10)); } }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,159
精华内容 2,863
关键字:

构造方法的修饰符