【小白转码】07
1.作用
在new对象的时候,直接为实例对象赋值,节省了创建对象后,再调用get()去赋值的麻烦。
2.语法格式
【修饰符】 class 类名{
    【修饰符】 构造器名(){
        // 实例初始化代码
    }
    【修饰符】 构造器名(参数列表){
        // 实例初始化代码
    }
}
注意事项:
- 
构造器名必须与它所在的类名必须相同。 
- 
它没有返回值,所以不需要返回值类型,甚至不需要void 
- 
如果你不提供构造器,系统会给出无参数构造器,并且该构造器的修饰符默认与类的修饰符相同 
- 
如果你提供了构造器,系统将不再提供无参数构造器,除非你自己定义。 
- 
构造器是可以重载的,既可以定义参数,也可以不定义参数。 
- 
构造器的修饰符只能是权限修饰符,不能被其他任何修饰 
3.this调用本类构造器
- this():调用本类的无参构造
- this(实参列表):调用本类的有参构造
- this(【实参列表】)只能出现在构造器内首行
    注意:不能出现构造器递归调用
4.super调用父类构造器
在继承关系中,子类不会继承父类的构造器,子类构造器可以通过super(【实参列表】)来调用父类构造器。
- 
子类的每个构造器中默认隐藏 super(),即默认调用父类的无参构造器。
- 
子类构造器中可以显示使用 super(【实参列表】)来调用父类无参或有参构造器,那么默认隐藏的super()不再存在。
- 
如果父类没有无参构造,则必须在子类构造器中显示使用 super(实参列表)来调用父类构造器。
- 
super(【实参列表】)只能出现在子类构造器的首行
总之:使用子类任意构造器创建对象时,必须要直接或间接通过super(【实参列表】)先调用执行父类构造器。
二、非静态代码块
1.作用
和构造器一样,也是用于实例变量的初始化等操作,所以也称为构造代码块。
如果多个重载的构造器有公共代码,并且这些代码都是先于构造器其他代码执行的,那么可以将这部分代码抽取到非静态代码块中,减少冗余代码。
2.执行特点
所有非静态代码块中代码都是在new对象时自动执行,并且一定是先于构造器的代码执行。
非静态代码块是先于构造器执行的
代码块必然执行
3.语法格式
【修饰符】 class 类{
    {
        非静态代码块
    }
    【修饰符】 构造器名(){
        // 实例初始化代码
    }
    【修饰符】 构造器名(参数列表){
        // 实例初始化代码
    }
}
举例:
public class Person {
    private String username;
    private String password;
    private long registrationTime;
    {
        System.out.println("新用户注册!");
        registrationTime = System.currentTimeMillis();
    }
    public Person() {
    }
    public Person(String username, String password) {
        this.username = username;
        this.password = password;
    }
    
三、实例对象初始化
1.初始化过程
实例初始化方法的方法体,由4部分构成:
(1)super()或super(实参列表)
- 
这里选择哪个,看原来构造器首行是super()还是super(实参列表) 
- 
如果原来构造器首行是this()或this(实参列表),那么就取对应构造器首行的super()或super(实参列表) 
- 
如果原来构造器首行既没写this()或this(实参列表),也没写super()或super(实参列表) ,默认就是super() 
(2)实例变量的显示赋值语句
(3)非静态代码块
(4)对应构造器中剩下的的代码
特别说明:其中(2)和(3)是按顺序合并的,(1)一定在最前面(4)一定在最后面
2.过程图解


四、关键字和Object类
1.native关键字
1.1 native的意义
native:本地的,原生的
1.2 native的语法
native只能修饰方法,表示这个方法的方法体代码不是用Java语言实现的,而是由C/C++语言编写的。但是对于Java程序员来说,可以当做Java的方法一样去正常调用它,或者子类重写它。
2.fianl关键字
2.1 final 修饰类
类不能在被继承--太监类
2.2 final修饰方法
方法不能再被重写
2.3 final修饰变量
final修饰某个变量(成员变量或局部变量),表示它的值就不能被修改,即常量,常量名建议使用大写字母。
如果某个成员变量用final修饰后,没有set方法,并且必须初始化(可以显式赋值、或在初始化块赋值、实例变量还可以在构造器中赋值)
一旦赋值就不能再被修改。
五、JavaBean
标准JavaBean
JavaBean 是 Java语言编写类的一种标准规范。标准的 JavaBean —般需遵循以下规范:
(1)类必须是具体的和公共的,
(2)并且具有无参数的构造方法,
(3)成员变量私有化,并提供用来操作成员变量的set 和get 方法。
(4)实现
java.io.Serializable接口 ?
public class ClassName{
  //成员变量
    
  //构造方法
    //无参构造方法【必须】
    //有参构造方法【建议】
    
  //getXxx()
  //setXxx()
  //其他成员方法
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号