类中最常见的三种成员
构造器、成员、方法。
构造器:
定义构造器的语法格式:
修饰符:可默认省略,也可定义 public 、private、protected的其中之一;
构造器名:必须与类名一致
成员变量
定义成员变量的语法格式:
修饰符:可默认省略,也可定义 public 、private、protected、static、final;其中public 、private、protected这三个只能出现一个,可以与static、final 组合起来修饰成员变量。
默认值;定义成员变量也可以指定一个默认值。
方法:
定义方法的语法格式
修饰符:可默认省略,也可定义 public 、private、protected、static、final、abstract;其中public 、private、protected这三个只能出现一个,abstract、final 只能出现一个,可以和static组合使用。
返回值:可以返回任意数据类型,有具体返回值必须 return ;没有返回值则 使用 void 声明没有返回值
形参:定义方法的参数类型。
修饰符
public :访问权限最低;
protected:同包内可以访问;
private:私有属性不可直接访问;
abstract :抽象,有抽象方法必定是抽象类,但抽象类可以包含普通方法;抽象类和抽象方法都不可以被实例化;
final :被final修饰的类或者变量不能被继承或者修改;
static:static修饰的变量和方法成为类(静态)变量和类(静态)方法。被static修饰的成员属于类本身而不是类的实例,即在类加载的时候static修饰的成员就加载了,不需要等实例化对象后在生效。
类中可以包含的变量
成员变量:
成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。
成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量(静态变量):
类变量也声明在类中,方法体之外,但必须声明为static类型。
局部变量:
在方法、构造方法或者语句块中定义的变量被称为局部变量。
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
类中各成员之间的关系
类中各成员之间的定义顺序没有任何影响,成员之间可以相互调用。
被static 修饰的成员不能访问非static 修饰的成员(静态得不可访问非静态的)。
对象的创建与引用之间的关系
每当实例化一个对象( Employee emp = new Employee() )代码就产生了: emp 与 Employee 对象(new Employee)这两个东西。
new 的对象存在“堆内存”中,其中包含了该对象的成员变量和方法。
把对象赋值给变量即 emp 时,是指在"栈内存" 中创建了一个 引用变量emp 指向了 “堆内存”中的对象 Employee,而不是直接把Employee直接复制一份给emp,切记是引用变量指向了对象。
当没有任何引用指向堆内存中对象时,此对象就是所谓的垃圾了,需要被Java回收的。
对象的this引用
作用一:在方法中引用调用该方法的对象,即在this可在使类的一个方法中,访问类的另一个方法或实例变量。
作用二:构造器中引用该构造器正在初始化的对象
代码:
package leihe;
public class Employee {
static String staticProperty=“苏州”;
static final String staticFinalProperty="Mytripod.com";
public static String publicStaticProperty="未成年";
private static final String privateStaticFinalProperty="10000000";
public int publicProperty =17;
protected String protectedProperty="崇仙";
private String privateProperty ="男";
public void publicFoo(){
System.out.println("public Foo");
}
protected void protectedFoo(){
System.out.println("protected Foo");
}
public static void publicStaticFoo2(){
System.out.println("public Static Foo2");
}
protected static final int publicStaticFinalFoo3(){
int i =1;
System.out.println("public Static Final Foo3");
return i;
}
private int privateStaticFinalFoo4(){
int i =4;
System.out.println("private Static Final Foo4");
return i;
}
public Employee(){
System.out.println("public 默认构造");
}
public Employee(int publicProperty){
System.out.println("public 构造器"+publicProperty);
}
private Employee(String protectedProperty){
System.out.println("private 构造器"+protectedProperty);
}
@Override
public String toString() {
return "Employee{" +
"publicProperty=" + publicProperty +
", protectedProperty='" + protectedProperty + '\'' +
", privateProperty='" + privateProperty + '\'' +
'}';
}
public static void main(String[] args) {
System.out.println(Employee.publicStaticProperty);
System.out.println(Employee.privateStaticFinalProperty);
Employee emp = new Employee();
emp.publicFoo();
emp.protectedFoo();
emp.privateStaticFinalFoo4();
emp.publicProperty=18;
emp.protectedProperty="崇仙2";
emp.privateProperty="男2";
staticProperty="我是静态数据";
publicStaticProperty="我是public静态属性";
System.out.println("静态最终属性"+staticFinalProperty);
System.out.println("静态属性"+staticProperty);
System.out.println("public 静态属性"+publicStaticProperty);
System.out.println(emp);
}
}