Java学习

final、枚举、接口

final关键字概述:

1,Final用于修饰类、成员变量和成员方法。

2,final修饰的类,不能被继承。

3,final修饰的所有方法,都不能被重写(可以被重载)。

4,final修饰的变量可以赋值一次。

对于第四点如果是引用数据类型被final修饰的话,那么不能被改变的是引用所保存的内存地址,对象里面的内容是可以改变的。

示例:

public class Test {
    public static void main(String[] args) {
        final Cat cat = new Cat();
        cat.name = "小小";
        System.out.println(cat.name);
        cat.name = "大大";
        System.out.println(cat.name);
    }
}

class Cat {
    String name;
}

但是如果把上面的cat指向一个新的对象,那么就会报错。

枚举:

枚举简单来说就是把一个问题所有的可能性全部列举出来,就像在大部分软件中的个人的信息里面人的性别只有男,女或者是有的人不想暴露性别这三种选项。有限且能被全部列举出来的就是枚举。

枚举类

  • enum和class、interface的地位一样
  • 使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类。
  • 枚举类的所有实例都必须放在第一行展示,不需使用new 关键字,不需显式调用构造器。自动添加public static final修饰。
  • 使用enum定义、非抽象的枚举类默认使用final修饰,不可以被继承。
  • 枚举类的构造器只能是私有的。

定义枚举的格式

[public] enum 枚举名 {
    第一行都是枚举实例,这些枚举实例直接写大写名字即可。
}

示例:

枚举人类的性别

public enum Sex {
    BOY,GRAIL
}

人类:有性别和名字属性

public class Human {
    Sex sex;
    String name;
}

测试类

public class Test {
    public static void main(String[] args) {
        Human human = new Human();
        human.name = "小明";
        human.sex = Sex.BOY;
        System.out.println(human.name + "是一个" + human.sex);
    }
}

接口

1,接口是Java中的一种类型【引用数据类型】主要有两个成分:方法,常量。

2,接口通常以interface关键字声明,接口和抽象类一样无法“new”对象。

3,接口不能包含成员变量,除了 static 和 final 变量。

4,接口中的方法全部都是抽象方法。

5,在Java中类是单继承的,但是可以实现多个接口(书写顺序:先继承,后实现)

定义接口的格式:

[public] interface 接口名{
  //方法  注意:接口中的抽象方法默认会自动加上public abstract修饰程序员无需自己手写!!
  //常量   接口中常量必须要给初始值,常量命名规范建议字母全部大写,多个单词用下划线连接。
}

示例:

public interface A {
    void work();
}

类实现接口的格式 :

[修饰符] class 类名 implements 接口名1,接口名2,...{//接口可以同时实现多个接口
    //实现所有的抽象方法
}

示例:

接口A

public interface A {
    void work();
}

接口B

public interface B {
    void speak();
}

实现类C

public class C implements A,B{
    @Override
    public void work() {
        System.out.println("工作方法");
    }

    @Override
    public void speak() {
        System.out.println("说话方法");
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        C c = new C();
        c.work();
        c.speak();
    }
}

结果

 类和类之间是继承关系关键字是“extends”;类和接口之间是实现关系关键字是“implements”;接口和接口之间也是继承关系关键字也是“extends”。(虽然抽象类也是使用“implements”关键字,但由于抽象类中可以存在抽象方法,甚至可以不用手动重写接口中的方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值