final是Java中对于不可改变的内容的关键字
有三个用法:
1 用来修饰类,这个类将不能被继承
格式:
[public] final class 类名{ }
特点:是一个最终类
2 用于修饰方法,这个方法将不能被重写
格式:
修饰符 final 返回值类型 方法名(参数列表){
}
子类不能重写该方法,子类可以调用这个方法
细节注意点:当一个方法必须要子类重写时,父类方法可以修饰成抽象类方法、如果不需要重写时,就用final来修饰
3 用来修饰变量,这个变量只能赋值一次。
格式:
final 类型 变量名;
final int a = 10;
当变量是基本类型的时候,是不可以重新赋值的,但是,如果是引用类型数据的话,是可以重新赋值的,不变的是地址。
eg:
枚举的初步介绍:对于枚举,举个例子,如果我们要表示关于季节的数据可以定义一个类型,对象用固定四个用来表示春夏秋冬,而如果表示星期,则就用固定七个用来表示每一天,像这种实例有限而且固定的类,再Java里面就称为枚举类。
枚举的概念:枚举类是一种特殊的类,它一样有自己的成员变量,方法,可以实现一个接口或者多个接口,也可以定义自己的构造方法,用关键字enum来定义枚举类型,另外它与关键字 class ,interface 处于同等位置。
枚举的格式:
public enum 枚举名(){枚举实例;}
eg;
public enum Sex(){
Boy,Gril;}
另外,枚举也可以有构造方法、成员变量、成员方法、(其中,构造方法的权限只能是private,不能定义其他 非私有权限),也可以去实现接口。
枚举的应用场景:
当要描述若干数据,这些数据是固定且有限的,就可以用枚举类型。
eg:
枚举类:
public enum Sex {
Boy,Girl;
}
父类:
public class Person {
int id;
String name;
Sex sex;
public Person(int id, String name,Sex sex) {
this.id = id;
this.name = name;
this.sex=sex;
}
}
子类:
ublic class E extends Person {
int salary;
public E(int id, String name,int salary,Sex sex) {
super(id, name,Sex.Boy);
this.salary = salary;
}
protected static void display(int id, String name, int salary,Sex sex) {
System.out.println(id + " " + name + " " + salary+sex);
}
}
测试类:
public class Test {
public static void main(String[] args) {
E e = new E(1,"小明",125,Sex.Boy);
E.display(1,"小明",1233,Sex.Girl);
final String a[]=new String[4];
a[0]="那";
a[0]="这";
System.out.println(a[0]);
System.out.println(Sex.Boy);
}
}
运行结果
接口:
当一个父类有多个子类的时候,这些子类里面有一些子类有共同的方法,但是另外一些子类却没有这些方法,这个时候我们的父类里面肯定不能有这些方法,所以便有了接口这个概念的诞生,接口是在继承里面为了让一些有相同方法的子类,而其余与这些子类继承同一个父类的子类却不需要这些方法,这个具有相同方法的子类就可以调用接口。
接口的概念:接口是Java中的一种类型,没有构造方法,而且是抽象类型,不能直接创建对象使用。和抽象类很相似,需要定义子类去实现接口。类与接口的关系为实现关系,即**类实现接口**,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似继承,格式相仿,只是关键字不同,实现使用 ` implements`关键字
接口与继承不同的是,接口可以实现多个,而继承只是单继承的,也就是只能有一个。
实现接口的格式:
[修饰符] class 类名 implements 接口名1,接口名2,...{//接口可以同时实现多个接口
//实现所有的抽象方法
}
eg:
定义一个运动员接口:
public interface SportMan {
void run(); //
void law(); //
}
接口的要求:
1 子类必须重写接口的所有方法(他的方法默认是抽象类)
2 若父接口中某个抽象方法未重写实现,这个子类也必须定义成抽象类。
eg:
接口类:
public interface Usb {
int a=20;
public abstract void chongdian();
}
public interface Usbd {
void Touxing();
}
调用接口类:
public class UsbIm implements Usb,Usbd {
@Override
public void chongdian() {
System.out.println("充电方法");
System.out.println(a);
}
@Override
public void Touxing() {
System.out.println("投影方法");
}
继承和接口同时使用的格式:
继承在前,接口在后,中间加个空格。
其中,Test是父类,Usb、Usbd是接口。



