Java8 final关键字与抽象类

final关键字 最终无法改变的

final修饰的变量如果是成员变量没有默认初始值,如果修饰局部变量可以只声明不初始化
final 修饰类 方法 变量
final 修饰类:不能被继承 不能有子类
final 修饰方法:不能被覆盖
final 修饰变量:一个常量
当使用的数据不变时,定义阅读性强的名称来表示该数据
被final修饰的变量,名称规范:所有字母大写,如果由多个字母组成,通过“-”分割

public static final int NUM=1;//全局变量

抽象类

描述一个事物
都没有足够信息将这个事物称为抽象事物

关键字 abstract

1.抽象方法一定定义在抽象类中,都要用abstract修饰

abstract class Quan{
   abstract jiao();//不写方法体 抽象类括号后直接结束语句
}

2.抽象类不能实例化,不能通过new关键字创建对象
只有子类覆盖所有的父类方法时,子类具体化,子类才可以创建对象
(如果没有覆盖所有的抽象方法。子类因为继承,还是抽象类无法实例化)

abstract class Quan{
    abstract void jiao();
}
class dog extends Quan{
    void jiao() {
        System.out.println("汪");
    }}
class wolf extends Quan{
    void jiao
() {
        System.out.println("jiao");
    }}
public class AbstractDemo {
    public static void main(String[] args) {
        dog d=new dog();
        d.jiao();
    }}

抽象类也是不断向上抽取而来的
抽取了方法声明,而不是方法体现
方法体现由各子类详细声明

问题总结

抽象类中有构造方法吗?

有 抽象类的构造函数虽然不能给抽象类对象实例化,因为抽象类不能创建对象
但是抽象类有子类,它的构造方法可以通过super();方法实例化
抽象类和一般类的异同点:
共同点:抽象类和一般类都是可以进行属性和行为的描述
不同点:抽象类描述不具体事物,一般类描述事物具体
代码上的不同:
抽象类可以定义抽象方法,一般类不行
一般类可以通过实例化创建对象,抽象类不行

抽象类一定要作为父类吗?

是的,必须使用子类覆盖父类所有抽象方法,子类才能实例化 调用方法

抽象类可以不定义抽象方法吗?

可以 运用抽象类定义非抽象方法目的,让方法无法被对象调用

抽象关键字abstract不能与哪些关键字共存?

final 因为final修饰的类不能有子类
private 因为私有化无法覆盖
static 静态后可以直接通过类名调用,抽象方法被调用没有意义

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容