java 接口、final关键字、枚举

文章目录

    • 1.final关键字
      • 1.概念
      • 2.语法
        • 1.修饰类
        • 2.修饰变量
    • 2.枚举
        • 1.什么是枚举?
        • 2.怎么使用枚举
        • 3.注意事项
        • 4.应用场景
    • 3.接口
      • 1.接口的概念
      • 2.语法
      • 3.用法
      • 4.接口到底有什么用,它的应用场景是什么?

1.final关键字

1.概念

final意为最终的,不可变的,被

当在java中,让类和方法只能被使用,而不能被改变的时候就可以使用final关键字修饰

比如java内部提供的类,我们可以查看,但却不能去修改

例如jScanner类

java 接口、final关键字、枚举_第1张图片

2.语法

final关键字只可以修饰类和变量

1.修饰类

public final class A{	//修饰类
    
}

注意,修饰类的话,该类就不能被继承

2.修饰变量

  • 成员变量和局部变量

修饰成员变量的时候只能在定义的时候赋值一次或者通过有参构造方法赋值一次,之后再也不能更改

局部变量也只能赋值一次,可以在定义时赋值,也可以定义之后在赋值,但同样赋值后不可更改

  • 基本数据类型变量和引用类型变量

基本数据类型被定义后就不可以修改

引用数据类型被定义后,引用不可以修改,但引用所指的内存空间中所存的值可以更改

总结:

  • final修饰类的时候,类不能被继承
  • 修饰方法的时候方法不能被重写
  • 变量只能赋值一次,然后不能改变

2.枚举

1.什么是枚举?

枚举是指列出可能发生的所有事件的集合,比如一个星期只有七天,四季只有春夏秋冬

枚举是有限的,且取值不能超过集合

下面我们来看一些实例,在JDk1.5之前我们会手动枚举数据

public class EnumDemo {
public static final int SPRING = 1;//春
public static final int SUMMER = 2;//夏
public static final int FALL = 3;//秋
public static final int WINTER = 4;//冬

public static void main(String[] args) {
	  showSeason(SPRING);

}

public static void showSeason(int season)) {
	switch (season) {
		case SPRING:
			System.out.println("春季");
			break;
		case SUMMER:
			System.out.println("夏季");
			break;
		case FALL:
			System.out.println("秋季");
			break;
		case WINTER:
			System.out.println("冬季");
			break;
		default:
			System.out.println("未知数据");
	}
}

用自定义关键字代替数值,实现春夏秋冬的枚举。在java1.5之后java自定义了枚举类型

2.怎么使用枚举

认识java中的枚举

java中的枚举叫做enum,本质上是一个特殊的类,与类平级。所以枚举类型也可以拥有成员变量、方法。

语法

public enum Color {
    RED,GREEN,BLUE;
}

用法

public class Test{
    public static void main(String[] args) {
		Color color = new Color.RED;		//枚举和类平级是一个特殊的类,且枚举里的每一个枚举数据都是它自己的一个对象
        
        System.out.println(color)
	}
}

结果:

RED

3.注意事项

  • 枚举中也可以有成员变量,成员方法,构造方法

  • 枚举可以实现接口

  • 枚举不能显示继承其他父类(会默认继承java.lang.Enum类)

4.应用场景

要描述的数据是有限的,这些数据就可以用枚举表示,枚举出来(信息分类)

3.接口

1.接口的概念

接口是java中的一种抽象类型,里面是一系列方法的声明,是一些方法特征的集合

2.语法

interface

public interface A {
    double PI = 3.14;

    double area();
}

3.用法

  • 接口里面可以有成员变量,但叫做常量,默认是public static final修饰的,不可变的常量
  • 接口的方法,也是被public static final修饰的,接口不实现方法,只提供方法的接口,所以不用写方法体(甚至连大括号都没有)
  • 实现接口的类,不许要实现接口的所有方法,否则会报错(除非实现接口的是抽象类就不用,但那样没有意义)
  • 接口可以继承接口,而且可以多继承

接口的本质是一系列方法的集合

例子:

按如下要求编写Java程序:

(1)定义接口A,里面包含值为3.14的常量PI和抽象方法double area()。

(2)定义接口B,里面包含抽象方法void setColor(String c)。

(3)定义接口C,该接口继承了接口A和B,里面包含抽象方法void volume()。

(4)定义圆柱体类Cylinder实现接口C,该类中包含三个成员变量:底圆半径radius、

圆柱体的高height、颜色color。

(5)创建主类来测试类Cylinder。

三个接口类A、B、C

public interface A {
    double PI = 3.14;

    double area();
}

public interface B {
    void setColor(String c);
}

public interface C extends A,B{ 	//接口可以继承接口,而且可以多继承
    void volume();
}

圆柱体类

public class Cylinder implements C{
    double radius;      //底面圆半径
    double height;      //圆柱体的高
    String color;       //颜色

    public Cylinder() {
    }

    public Cylinder(double radius, double height, String color) {
        this.radius = radius;
        this.height = height;
        this.color = color;
    }

    @Override
    public void volume() {
        System.out.println("圆柱体的体积是:"+area()*height);
    }

    @Override
    public double area() {
        return PI*radius*radius;
    }

    @Override
    public void setColor(String c) {
        this.color = c;
        System.out.println(color+"圆柱体");
    }

    public void PrintColor(){
        System.out.println("我是"+color+"圆柱体");
    }

}

测试类

public class Test {
  public static void main(String[] args) {
    Cylinder cylinder = new Cylinder(2,4,"蓝色");

    cylinder.setColor("黄色");
    cylinder.volume();
  }

结果:

java 接口、final关键字、枚举_第2张图片

4.接口到底有什么用,它的应用场景是什么?

java 接口、final关键字、枚举_第3张图片

多个类,但只其中有一部分含有共同方法,则可以把这个方法抽离出来作为接口去实现,这样也不会影响到其他的类

所以,可以理解为接口在堆java的继承做一个补充,无论是继承还是多态还是接口,都是为了减少代码的冗余,和复用性

你可能感兴趣的:(程序人生,java,jvm,面试)