目录
一.final:
fianl理解:
final使用场景:
二.枚举:
枚举理解:
枚举能干什么:
三.接口:
接口理解:
接口能干什么
四.接口,抽象类,类的区别和联系:
一.final
final理解:
final关键字,用来修饰不可改变的内容。
final使用场景:
1.修饰类:
- .修饰类,表示这个类不能被继承。是一个最终类.
- 其实被final修饰的类我们经常用,比如public final Scanner ,public final String。这些我们经常使用的类,被final修饰之后就会不可更改,不可以被继承,确保这个内容不会被随意的修改。
例如:
//语法
public class final Animal{
}
2.final修饰方法,表示这个方法在父子类的继承关系中不能被覆盖,不能重写。但是可以被重载
例如:
被final修饰的方法子类不可重写,但是可以调用
语法定义:
作用域修饰符 final 返回值类型 方法名(){
}
public final void eat(){
}
3.修饰变量。
被final修饰的变量只能赋一次值,并且一定要赋值。当两者不满足时,编译报错
注意:
基本数据类型以及String类型的的变量被final修饰,只能赋一次。但是对于其他引用数据类型可以修改值,但是不能修改地址
举例:
final int a=10;
a=20;//编译报错
final int[] a2={10,23,0};
a2[0]=20;//修改被final修饰的值
int[] a2=new int[4];//编译报错
这个主要是因为引用类型确定的是地址值,指向堆空间中的地址不能被修改,但是可以修改空间中的值。
语法:
final 数据类型 变量名;
二.枚举
枚举理解:
1.枚举不断举出实例,就像季节,那么有哪些季节呢?这个时候就不断举出实例春季,夏季,秋季,冬季。一共有这四个季节,还有星期,有星期一,星期二,星期三,星期四,星期五等等。这些星期。可是对于这些实例怎么装起来呢?这个时候我们引入枚举类型。
2.枚举是实例有限并且固定的特殊类,与class修饰的类同级,由一般的枚举类一组常量组成。但是枚举除了不能使用继承之外,其他的都和常规类都一样,可以有自己的变量,方法,甚至main方法
3.常量定义:不能修改的,明确的变量叫常量,一般使用final关键字修饰)。常量定义语法:public static final a=10
4.枚举类型用enum 关键字定义。
语法定义:
枚举类型代码举例:
public enum Blogdemo1 {
monday,tuesday,sunday,friday;
int a=10;
public static void show(){
System.out.println("我是枚举类");
}
public static void main(String[] args) {
Blogdemo1 blogdemo1 = null;
System.out.println(blogdemo1.monday);
show();
}
private Blogdemo1(){
}
}
结果:
枚举能干什么:
1.枚举类型是一个实例有限并且固定的类型,所以当我们要描述的数据是有限的固定的时候,我们就可以用枚举描述。
举例;
男女性别,地球的国家,星期
2.枚举可以和switch结合使用这样就可以清晰的知道每个case语句
注意点:
1.枚举类型的第一行是常量,都是我们枚举的实例。
2.枚举是不能创建外部创建对象的,构造器默认是私有化的(这个地方有些不理解)
3.枚举一般用来描述。
三.接口:
接口理解:
1.接口是一个特殊的类,由常量和公共抽象方法组成,由于由抽象方法组成,导致使用这个接口的实现类必须重写抽象方法,从而默认的制定了一个标准规范。
2.接口是Java中的一种类型【引用数据类型】主要有两个成分:方法,常量 ,由interface声明。(接口中的方法默认会加abstract,不需要手动创建抽象方法)
3.接口没有构造方法,不能直接创建对象,可以通过实现子类间接创建对象。
4.类和接口的关系类似于继承关系,即实现关系,该类称为实现类或者接口的子类,关键字implements声明
5.一个类可以实现多个接口,只需要每个接口之间逗号分隔
代码举例:
接口的定义:
interface 接口名{
常量
方法
}
//定义接口A,里面包含值为3.14的常量PI和抽象方法double area()。
interface A{
public static final double PI=3.14;
public double area();
}
接口实现:
class 类名 implements 接口名,接口名2,......{
重写接口抽象方法
}
class Cylinder implements C{
@Override
public double area() {
double are=PI*radius*radius;
System.out.println("面积:"+are);
return PI*radius*radius;
}
}
接口作用:
1.接口制定了规范,强制实现类全部重写接口方法,或者把自己变成抽象类。(当实现类没有重写抽象方法,必须把自己变成抽象类。)
四.接口,抽象类,类之间的联系和区别:
接口与类之间,是一种实现的关系
接口与接口:打破了Java的单继承关系,一个接口可以继承多个接口,当类实现的时候,必须重写所有的接口方法。否则该类就要变成抽象方法。
接口和抽象类区别:
1.抽象类有构造方法,方便子类创建对象使用。接口没有构造方法,只能通过子类间接创建对象。
2.接口没有变量,全部是final修饰的常量。抽象类有变量。
3.抽象类有普通方法和抽象方法,接口全部是抽象方法。