抽象类

    科技2022-07-12  138

    final关键字

    final:最终的 final修饰引用 方法 类 常量: final修饰引用 --常量 引用不可发生变化的量 常量:final 数据类型 常量名 = 初始化值; 常量名: 字母全部大写 每个单词之间通过_分隔 注意: 1、如果定义常量时已经直接赋值,则在构造代码块和构造方法中都不能改变常量的值; 2、如果定义常量属性只声明但是没有赋值,则必须在构造代码块中或者构造方法中完成常量的初始化,否则编译报错; 不能同时在构造代码块和构造方法中进行初始化 3、如果形参的值也不允许发生变化 则可以在形参前边加final修饰 public void method(final int MAX_VALUE){ } 引用不可发生变化加深: 基本数据类型:值不可变 final int NUM = 3; NUM = 4;//编译报错 引用数据类型:引用不可变 final int[] NUMS = {1,2,3}; NUMS = new int[3];//编译报错 NUMS存储的地址被改变 NUMS[0] = 88;//没问题 并没有修改NUMS的引用 只是修改了该引用指向地址的值 编译运行不报错 复杂情况: 将常量作为实参 传递给形参 形参不加final修饰时,形参如何发生变化都不会报错 并不影响实参引用 最终方法: 权限修饰符 final 返回值类型 方法名([参数列表]){ 方法体; return 返回值; } 特点: final修饰的方法不能被重写 Pet pet = new Cat(); 子类重写了父类的eat方法 pet.eat();//调用的是子类的eat方法 某些情况下父类中的方法是不希望被子类重写的 这是就需要final修饰 使用场景: 如果父类不希望该方法被任何子类重写 则可以在方法上加final 最终类 final修饰类 权限修饰符 final class 类名{} 特点: final修饰的类不能被继承 final修饰的类: String System String为什么要使用final修饰? String是非常常用的数据类型 如果String没有用final修饰 则我们可以通过继承String类重写它的方法 String passwd = “123456”;类似这样的字符串是绝对不能被修改的 否则程序会非常的不安全; 应用场景: 如果定义了一个类 这个类中所有方法都不能被重写 就可以通过final修饰这个类 静态常量: static final 静态常量名 = 初始化值; static final 常量名; 对于静态常量来说,一旦有了初始化值不能再修改–final

    static int num = 2;//静态变量 final int NUM = 4;//常量 static final int MAX_VALUE = 100;//静态常量 静态常量: 通过类来直接调用 类.静态常量 一旦赋予初始值则不能修改; 场景: 值固定可以通过类方便直接调用属性就可以通过static final修饰 例如: javaMath类中就定义了两个静态常量 Math.PI 圆周率 Math.E 自然对数的底数 注意: 1、static final int MAX_VALUE = 100; 直接定义并赋予初始值 2、定义时可以先不赋值 但是必须在静态代码块之内完成赋值

    抽象类–abstract

    abstract:方法 类 抽象方法: 权限修饰符 abstract 返回值数据类型 方法名([参数列表]); 例如: public abstract void eat(){}; 特点: 抽象方法没有方法体; 抽象类: 权限修饰符 abstract class 类名{} 例如: public abstract class Pet {}

    注意: 1、如果类中有抽象方法 则该类必须为抽象类; 抽象类中可以没有抽象方法;–为了不让这个抽象类创建对象,不建议这么用 2、抽象类中可以包含: 抽象方法 属性 普通方法 构造方法 构造代码块 静态代码块 3、抽象类不能创建对象,但是以下两种方式可以使用抽象类: 子类继承抽象类,子类必须实现(implement)父类中的所有抽象方法; 使用另一个抽象类继承当前抽象类,会将父类的抽象方法和非抽象方法都继承过来;但是最终我们仍需一个具体的类来实现这个抽象方法; 4、抽象类的构造方法是当创建子类对象时,由子类来调用的; 5、final/static/private是否可以修饰抽象方法?–不可以 抽象方法一定要被重写 private私有子类不可见 不能重写该抽象方法 static修饰的方法不能被重写 final修饰的方法不能被重写 6、final是否可以修饰抽象类?–不可以 final修饰的类不能被继承 而抽象类需要由子类继承并实现其中的抽象方法 7、抽象类可以作为向上造型的父类引用来使用 抽象类的优点: 要求子类必须实现某些方法–规范

    类中可以定义的内容: 属性 方法 构造方法 构造代码块 静态系列

    Processed: 0.011, SQL: 8