乐趣区

关于java:Java基础09类枚举和接口

1. 包

1.1 什么是包

  • 包次要是分门别类的来治理类,相似于文件夹。
  • 建包语法:package 公司域名. 技术名称,倡议全副小写
  • 建包语句必须在第一行

1.2 导包

  • 雷同包下类能够间接拜访,不通包下能够通过导包援用类。
  • 如果须要导雷同类,在类上只能导入一个包门路,类中如果须要再援用雷同类须要应用全路径名:包名. 类名();
  • 格局:import 包名. 类名 / import 包名. 类名

2. 权限修饰符

权限修饰符是来润饰成员拜访的范畴,权限修饰符能够润饰成员变量,结构器,办法和外部类。

权限修饰符拜访范畴如下:

修饰符 同一类 同一包中其余类 不同包下子类 不同包下无关类
private
缺省
protected
public

3. final 和常量

3.1 fianl

fianl 示意最终的,能够润饰变量,办法和类

  • 润饰变量:该变量仅只能赋值一次
  • 润饰办法:该办法为最终办法,不能够被重写
  • 润饰类:该类为最终类,不能被继承

注意事项:
润饰根底类型:被第一次赋值后不能被扭转。
润饰援用类型:对象援用地址不能被扭转,但地址对象外部信息能够批改。

示例:

public class FinalTest {
    public static final int num = 10;

    public static final Dog dog = new Dog("二哈", 10);

    public static void main(String[] args) {System.out.println(num);
        System.out.println(dog.getName());
        // 程序报错
        // num = 20;

        dog.setName("三哈");
        System.out.println(dog.getName());
    }
}

3.2 常量

  1. 常量是应用 public static final 润饰的变量,必须初始化值并且在执行过程中不能批改值。
  2. 常量罕用于文件配合,进步代码可读性,便于前期保护。
  3. 常量命名标准:单词名称大写,多个单词之间应用下划线连贯

执行原理:

在编译过程进行替换,会把所有常量替换成字面量。
替换成字面量进步执行的效率。

4. 枚举,接口和抽象类

4.1 枚举(enum)

枚举是 java 的一种非凡类型,是为了做信息的标记和分类

格局:

修饰符 enum 枚举类型 {...}

示例:

public enum Direction {UP("向上", 1),
    DOWN("向下", 2),
    LEFT("向左", 3),
    RIGHT("向右", 4);

    private String name;
    private int flag;

    private Direction(String name, int flag) {
        this.name = name;
        this.flag = flag;
    }

    public String getName() {return name;}

    public void setName(String name) {this.name = name;}

    public int getFlag() {return flag;}

    public void setFlag(int flag) {this.flag = flag;}
}

枚举的特色:

  1. 枚举类都是继承 java.lang.Enum
  2. 枚举类是最终类,不能够被继承
  3. 结构器都是公有,不能被实例化
  4. 枚举类第一行默认都是写枚举类对象的名称

4.2 接口(interface)

java 中的接口是一种标准,相似于生存当中的接口。比方当初市面上的 Type- C 充电口,这就是一种标准,大家都依照这样设计,那样的话就能够通用。束缚了统一的内容也凋谢了自定义实现。

4.2.1 定义格局

修饰符 interface 类名 {...}

4.2.2 特点

  • JDK8 前外部只能有形象办法和常量(上面介绍)
  • 接口不能实例化
  • 接口中的所有成员都是 public,默认是的写不写都是

4.2.3 接口应用(implements)

格局:
修饰符 class 类名 implements 接口类名 1、接口类名 2 …{

    ...

}

  • 接口是用来被实现的实现接口的类被称之为实现类,也能够了解为子类,应用关键字 implements
  • 接口能够被单实现,也能够被多实现
  • 一个类实现接口必须重写所有形象办法,否则实现类为抽象类
  • 继承与实现:①类只能单继承 ②类能够多实现 ③接口之间能够实现多继承

4.2.4 JDK8 后接口新标准

当接口被定义下来后,须要很多子类来实现。前期扩大保护时,须要增加新形象办法,这时所有实现类必须都要实现,否则程序编译失败。这样导致呈现很多不必要工作量。JDK8 后新增了新标准。

  1. 默认办法

    办法定义格局相似类成员办法,修饰符必须是 default。该办法须要接口实现类来调用。

示例:

public interface Interface1 {void show();

    default int add(int x, int y) {return x + y;}

    default int addNum(int x, int y) {return add(x, y);
    }

}
public class InterfaceImpl implements Interface1 {
    @Override
    public void show() {System.out.println("实现了 Interface1 的 show 办法");
        int a = addNum(1, 2);
        System.out.println("调用抽象类默认办法:" + a);
    }

    public static void main(String[] args) {InterfaceImpl anInterface = new InterfaceImpl();
        anInterface.show();}
}
  1. 静态方法
    静态方法是用 public(默认修饰符)润饰,办法须要增加 static。接口静态方法必须用接口自身进行调用。
// 接口办法,写在 Interface1 接口中
static double getPI() {return 3.14;}

// 执行接口静态方法
Interface1.getPI();
  1. 公有办法(jdk1.9 后)
    办法必须应用 private 润饰,只能在本类被默认和公有办法调用

示例:

private void go(){System.out.println("开始执行接口公有办法");
}

4.2.5 注意事项

  • 接口不能实例化对象
  • 一个类能够实现多个接口,多个接口中的静态方法不抵触
  • 一个类继承父类同时实现多个接口,如果接口和父类呈现同名办法,默认应用父类
  • 一个类单继承多实现

4.3 抽象类(abstract)

在 java 中 abstract 是形象的意思,如果一个类中有不确定的办法,须要不同的子类来实现,则能够用 abstract 创立抽象类,只需定义方法名,不须要具体实现。abstract 关键词能够润饰类和办法。

// 抽象类格局
修饰符 abstract 类名 {
}

// 形象办法
修饰符 abstract 返回类型 办法名(形参列表...);
// 示例
public abstract class AbstractTest {public abstract void show();
}

抽象类的特色和注意事项:

  1. 抽象类不能进行实例化
  2. 类的成员抽象类都具备
  3. 抽象类不肯定存在形象办法,存在形象办法的类肯定是抽象类
  4. 继承抽象类的子类肯定重写形象办法,否则这个类也是抽象类
  5. abstract 不能润饰成员变量、结构器和代码块

应用场景:
能够把形象办法看成是一个模板,当大部分性能都雷同,然而只有个别性能独特。这时就能够应用抽象类,让使用者继承抽象类重写办法。

抽象类的劣势:

  • 进步代码的复用性
  • 须要实现的办法定义成形象法,使使用者只须要关怀要实现的性能
    • *

本章完结,用于集体学习和小白入门,大佬勿喷!心愿大家多多点赞珍藏撑持撑持!

源码【GitHub】【码云】

退出移动版