目录

一.final:

  fianl理解:

  final使用场景:

二.枚举:

  枚举理解:

  枚举能干什么:

三.接口:

  接口理解:

  接口能干什么

四.接口,抽象类,类的区别和联系:

一.final  

final理解:

final关键字,用来修饰不可改变的内容。

final使用场景: 

1.修饰类:

  • .修饰类,表示这个类不能被继承。是一个最终类.
  • 其实被final修饰的类我们经常用,比如public final Scanner ,public final String。这些我们经常使用的类,被final修饰之后就会不可更改,不可以被继承,确保这个内容不会被随意的修改。

例如:

java fromdata接口 java 接口 final_学习

 //语法
public class final Animal{

2.final修饰方法,表示这个方法在父子类的继承关系中不能被覆盖,不能重写。但是可以被重载

例如:

java fromdata接口 java 接口 final_java fromdata接口_02


 被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 关键字定义。

语法定义:

java fromdata接口 java 接口 final_java fromdata接口_03

 

 

枚举类型代码举例: 

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(){
    }
}

结果: 

java fromdata接口 java 接口 final_抽象方法_04

 

 

 

枚举能干什么:

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.抽象类有普通方法和抽象方法,接口全部是抽象方法。