成员变量和局部变量
成员变量:类中、属性、也叫全局变量
局部变量:方法中
1.成员变量和局部变量重名问题?
①当成员变量和局部变量重名时,由于局部优先原则,也称就近原则。如果想要使用成员变量,需要在前面加this。 格式→this.成员变量
②this用法之一,代表当前类的当前对象,不用区分时可以是省略。必须和局部变量区分时,必须带。
2.成员变量和局部变量的区别?
①位置:
成员变量:类中,方法外。
局部变量:方法中。
②内存中的位置:
成员变量:堆中对象里。
局部变量:栈中方法里。
③声明周期:
成员变量:随着对象的存在而存在,随着对象的消亡而消亡。
局部变量:随着方法的压栈而存在,随着方法的弹栈而消亡。
匿名对象
1.概念:匿名对象,没有对象的名称。
2.好处:
①简化书写
②节省内存空间,垃圾回收机制,自动回收
注意:对于匿名对象来说,同一个对象。调用属性或方法,只能调用一次。
构造方法
作用:
①创建对象时,调用方法。
②初始化
注意:初始化可以是属性,也可以是其它方法。
格式→new 构造方法(参数)
细节问题:
①构造方法的声明:[控制权限修饰符] 类名(参数){}
注意:
①如果一个类中没有显示声明构造方法,Java编译器会自动添加一个空参构造方法。
②如果一个类显示声明构造方法,Java编译器就不会自动添加。
构造方法与一般方法的区别?
①写法上:
构造方法:没有返回值,连void返回值都没有。
一般方法:有返回值类型。
②调用方法式上:
构造方法:new的时候使用,也就是创建对象时才调用。
一般方法:创建对象后,被对象调用(static静态除外)。
③使用次数上:
构造方法:对于同一个对象来说,只能使用一次。
一般方法:对于同一个对象来说,可以无限使用。
构造方法的重载:
格式:[权限修饰符] 类名(参数){}
注意:根据参数的不同,可以有不同的构造方法,这种方式称为”构造方法的重载形式“
面向对象
1.三大基本特征:封装、继承、多态
2.特征(四个):封装、继承、多态、抽象
3.封装:对外隐藏事物的细节,只提供接口供外界访问。
封装的好处:提高程序的安全性,提高代码的复用性。
封装的最大体现:私有的属性,共有的方法。
private关键字:私有的属性,通过private进行修饰的属性。
共有的方法:通过setter和getter方法
静态
1.概念:static静态
2.内存图
3.总结:
①静态成员随着类的加载而加载,只加载一次。
②对于静态修饰成员,用static修饰成员,存在方法区的静态区中。
③静态成员特点:实例共享,所有对象共享该成员。
4.静态成员的格式:
①凡是static修饰,都是静态成员。
②调用格式:类名.属性名称/方法名称。
③静态成员又叫类成员,属性被称为类属性,方法被称为类方法。
5.静态成员与非静态成员之间调用关系:
①静态成员调用静态成员:直接调用
②非静态成员调用静态成员:直接调用
③非静态成员调用非静态成员:直接调用
④静态成员调用非静态成员:不能直接调用
如果想要使用:
①添加为静态
②创建对象,保证非静态成员的存在,才能调用。
6.静态成员与非静态成员的区别:
①写法:
静态成员:用static修饰
非静态成员:没有static修饰
②内存中的位置:
静态成员:方法区中的静态区中。
非静态成员:属性在堆中对象里,方法在方法区中的非静态区。
③调用:
静态成员:类成员,通过类名.属性/方法(参数)
非静态成员:创建实例,通过对象.属性/方法(参数)
④声明周期:
静态成员:随着类的加载而加载,随着类的消亡而消亡。
非静态成员:随着对象的存在而存在,随着对象的消亡而消亡。
JavaBean
1.概念:符合某种规范的Java类。
2.规范:
①必须又getter和setter方法
②必须又无参构造,如果显示声明了其它构造,没有无参构造,必须手动添加无参构造。
初始化顺序问题
1.初始化:
①默认初始化:开辟空间,默认赋值。
②显示初始化:直接在声明属性时,为属性赋值。
③构造初始化:在构造方法中为属性赋值。
2.顺序:默认初始化→显示初始化→构造初始化