一、类成员
1.定义:static修饰的成员就是类成员(成员变量,方法,构造器,初始化块,内部类)。
2.类变量:类变量属于整个类,它即可通过类来访问,也可通过类的对象来访问。(当通过对象来访问类变量时,系统会在底层转换为通过该类来访问类变量)
3.类方法:通常直接使用类作为调用者来调用类方法,也可以使用对象来调用类方法。
4.类初始化块:用于执行类初始化动作,一旦类初始化结束后,类初始化块将永远不会获得执行的机会。
注:类成员属于整个类,不属于单个对象。
二、final关键字
1.作用:
(1)修饰变量:常量;
(2)修饰方法:该方法不可被子类重写,但是可以被重载。
(3)修饰类:修饰的类不能有子类,不能被继承。
2.final成员变量:final修饰的成员变量必须由程序员显式地指定初始值。
public class Finaltest{
final int a;
final String str;
final static double b;
}
3.final局部变量:用final修饰局部变量,既可以在定义时指定默认值,也可以不指定默认值。如果没有指定默认值,则可以在后面对final变量赋初始值,但只能一次,不能重复赋值。
4.可执行“宏替换”的final变量:
(1)满足三个条件final变量就相当于一个直接量:使用final修饰符修饰;在定义该final变量时指定了初始值;该初始值可以在编译时就被确定下来。
(2)例如:
public class Finaltest{
public static void main(String[] args){
final var 5;
System.out.println(a);
}
}
注:final修饰的变量不可被改变,一旦获得了初始值,该final变量的值就不能被重新定义。
三、==和equals方法
1.作用:都是用来测试两个变量是否相等。
2.区别:当使用==来判断时,如果两个变量是基本类型变量,且都是数值类型,则两个变量的值相等。当使用equals来判断时,所有引用变量都可调用该方法来判断是否与其他引用变量相等。
例如:
public class Equaltest
{
public static void main(String[] args)
{
var s1=65;
var s2=65.0f;
System.out.println("它们是否相等?"+(s1==s2));
}
}
class Person
{
public boolean equals(Object obj)
{
return true;
}
}
//定义一个空类
class dog{}
public class Equalstest
{
public static void main(String [] args)
{
var p=new Person();
System.out.println("Person对象是否等于Dog对象"+p.equals(new Dog()));
}
}
四、抽象类
1.抽象方法和抽象类必须使用abstract修饰符来定义。
2.有抽象方法的类只能被定义程抽象类,抽象类里面可以没有抽象方法。
3.抽象方法和抽象类的使用:
(1)抽象方法不能有方法体。
(2)不能使用new关键字来调用抽象类的构造器创建抽象类的实例。
(3)抽象类的构造器不能用于创建实例,主要是用于被其子类调用。