一、访问修饰符
在类和方法中,均可使用访问修饰符以锁定该类或方法的被访问权限。访问修饰符有四种:
(一)public
同一个项目中,对所有的类可见。
(二)protected
同一个项目中,对同一个包中的类可见,对子类可见,对其他包中的类不可见。
(三)default
同一个项目中,对同一个包中的类可见,对其他包中的类不可见。
(四)private
同一个项目中,只对当前类可见。
二、static 和 this 关键字
(一)static
static 用于修饰类或方法,表示其为静态类或静态方法,在调用的过程中无需对其实例化,即可直接使用。
public class OuterSample
{
public static void innermethod()
{
System.out.println("hello!");
}
public static void main(String[] args)
{
OutSample.innermethod();
}
}
该案例中,由于方法 innermethod() 用 static 修饰,在 main 方法中调用的时候无需实例化,直接用 类名.方法名 即可调用。
(二)this
this 关键字用于指代当前对象(this 指向对类进行实例化之后的全局变量,而不是方法中定义的局部变量),比较以下三个案例:
public class OuterSample
{
String name="Spike";
public String innermethod()
{
String name="Tom";
return name;
}
public static void main(String[] args)
{
OuterSample os1=new OuterSample();
String x=os1.innermethod();
System.out.println(x);
}
}
本案例中没有使用 this 关键字,则调用 innermethod() 时默认使用局部变量 “Tom”。
public class OuterSample
{
String name="Spike";
public String innermethod()
{
String name="Tom";
return this.name;
}
public static void main(String[] args)
{
OuterSample os1=new OuterSample();
String x=os1.innermethod();
System.out.println(x);
}
}
本案例中,os1 为类 OuterSample 的一个实例化对象,this 关键字指向类 OuterSample 的全局变量,即 “Spike”。
public class OuterSample
{
String name="Spike";
public String innermethod()
{
this.name="Tom";
return this.name;
}
public static void main(String[] args)
{
OuterSample os1=new OuterSample();
String x1=os1.innermethod();
System.out.println(x1);
String x2=os1.name;
System.out.println(x2);
}
}
本案例中,this 同样指向全局变量,但在方法中对全局变量进行了重新赋值,所以即使 this 指向全局变量,也是在方法 innermethod() 中被赋值为 “Tom” 的全局变量。而 x2 没有调用方法,this 指向的仍然是方法 innermethod() 外部的全局变量,也就是“Spike”。
三、构造方法和普通方法
(一)构造方法
① 方法名与类名相同
② 没有返回值类型
③ 不能使用 static 修饰
④ 可以有多种重载形式
(二)普通方法
普通方法名称与类名不能相同,分为静态方法和实例方法:
静态方法,使用 static 修饰符,无需对类进行实例化即可调用。
实例方法,不使用 static 修饰符,调用时需要先对类进行实例化,然后用 类名.方法名 调用。
四、方法重载和方法重写
(一)方法重载
构造方法和普通方法均可进行方法重载,也就是方法名相同,而参数数量或类型不同。
特点:同一个类,方法名相同,参数列表不同。
(二)方法重写
方法重写发生在子类继承父类的情况下,当子类需要对父类的某些方法进行重新编写的时候,可以在子类中进行方法重写,方法名与父类的方法名相同。
特点:不在同一个类,子类重写父类的方法,方法名和参数列表均相同。