单例类里的 public 方法和普通类里的静态 public 方法有什么区别?不同的应用场景是什么?
回答·4
最热
最新
- 单例和静态的 oublic 方法作用差不多,不同在于单例面对的是对象,里面的方法和对象想关联,静态面对的是方法,同一个类中的静态方法可能和这个类没太大关系,静态在编译加载就分配好了,单例可以在需要的时候创建,单例方法可以重写
- 单例和静态的 oublic 方法作用差不多,不同在于单例面对的是对象,里面的方法和对象想关联,静态面对的是方法,同一个类中的静态方法可能和这个类没太大关系,静态在编译加载就分配好了,单例可以在需要的时候创建,单例方法可以重写
- 单例的只会被执行一次,一般创建开销高的会做成单例模式避免浪费资源
- public 修饰是非静态方法,该类方法属于对象,在对象初始化(new Object())后才能被调用; public static 修饰是静态方法,属于类,使用类名.方法名直接调用。 非静态方法之间可以互相调用,非静态方法也可以调用静态方法;但是静态方法不可以直接调用(未初始化的)非静态方法。由于 public static void main 作静态方法,所以遵循这个原则。 但是 Java 可以通过对象名调用静态方法(对象名.静态方法)。Java 中不会导致语法错误(syntax error),但是不推荐这样使用,静态方法与非静态方法调用时应当绝对区分;而且其他 OOP 语言如 C#,Swift,Objective-C 都没有这样的语法。