目录
静态方法不可以访问成员属性,一个相对于类,一个相对于对象
单列模式:
JVM默认给类提供的构造方法,其实就是公共的,无参的构造方法
- 类的创建过程复杂
- 类的对象消耗资源
public class java03_danlimoshi {
public static void main(String[] args) {
User1 instance1=User1.getInstance();
User1 instance2=User1.getInstance();
System.out.println(instance1==instance2);
}
}
class User1{
// 1创建类和构造方法(private)
private User1(){
}
// 3创建私有 的静态属性
private static User1 user1=null;
// 2创建静态方法,因为第一步是private 还是无法new一个对象 ,创建静态方法可以直接通过类调用,但无法解决资源消耗的问题
public static User1 getInstance() {
// return new User1();// 这是第二步的代码 还是无法解决资源消耗的问题
// 第三步 判断user1是否等于null,是就new 一个,不是就return 本身
if (user1 == null) {
user1 = new User1();
}
return user1;
}
}
final:
Java中提供了一种语法,可以在数据初始化后不被修改,使用关键字final
1.final可以修饰变量:变量的值一旦初始化后无法修改
2.final可以修饰属性:那么JVM无法自动进行初始化,需要自己进行初始化, 属性值不能发生变化
通过静态
3.一般将final修饰的变量称之为常量,或者叫不可变变量
4.final可以修饰方法,这个方法不能被子类重写
5.final可以修饰类,这样类就没有子类了
6.final不可以修饰构造方法
7.final可以修改方法的参数,一旦修饰,参数就无法修改。
public class Java20_Object {
public static void main(String[] args) {
// TODO 面向对象
// Java中提供了一种语法,可以在数据初始化后不被修改,使用关键字final
// final可以修饰变量:变量的值一旦初始化后无法修改
// final可以修饰属性:那么JVM无法自动进行初始化,需要自己进行初始化, 属性值不能发生变化
// 一般将final修饰的变量称之为常量,或者叫不可变变量
// final可以修饰方法,这个方法不能被子类重写
// final可以修饰类,这样类就没有子类了
// final不可以修饰构造方法
// final可以修改方法的参数,一旦修饰,参数就无法修改。
final String name = "zhangsan";
//name = "wangwu";
//System.out.println(name);
//User20 user = new User20("wangwu");
User20 user = new User20();
//user.name = "zhangsan";
//System.out.println(user.name);
//user.name = "lisi";
//System.out.println(user.name);
}
}
final class User20 {
public User20() {
}
// public void test( final String name ) {
// name = "lisi";
// }
// public final String name;
// public User20(String name) {
// this.name = name;
// }
// public final void test() {
//
// }
}
//class Child20 extends User20 {
public void test() {
}
//}