抽象

abstract修饰符

在继承结构中,上层的类会更具有通用性,不同的子类可以以不同的实现去重写父类继承下来的功能。如计算器,为了完成科学计算的、会计使用的、普通的等,以不同的方式完成数字计算。像这类的在众多的方式中我们抽取出共同的、本质性的特征,舍弃其非本质的特征的过程,这称为抽象。在Java中,关键字abstract表示抽象,它常用于修饰类、方法等,他们称为抽象类或抽象方法

3.1抽象类和抽象方法的关系

有抽象方法的类必须是抽象类,但抽象类中不一定要有抽象方法

3.2格式

//抽象类
public abstract class Person{
    //抽象方法
    public abstract void go();
}

抽象方法没有具体的实现,必须由其继承的子类去实现抽象方法

3.3作用

抽象类不能被实例化(new)创建对象,但它可以被子类继承。抽象方法没有具体的实现,只有方法的声明,由子类去重写实现。子类继承抽象类时必须重写实现抽象方法,否则该子类也要声明为抽象类

public abstract class Person{
    private int num;
    public Person(){}
    public Person(int num){ this.num = num;}
    public abstract void getDescription();
    public int void getNum(){
        return this.num;
    }
}

public class Teacher extends Person{
    public Teacher(){ super() }
    public Teacher(int num){ super(num) }
    public void getDescription(){
        //code,对个人的描述
    }
}

//编译报错,abstract修饰的类不能实例化
Person per = new Person();
//编译成功,可以用abstract修饰的类做引用类型,子类的构造器调用了父类的构造,并将‘12’传参过去
Person tea = new Teacher(12);
tea.getNum;//12,因为Teacher没有重写父类的getNum方法,所以调用的是父类的getNum方法

抽象类不能实例化,但抽象类也有构造器,子类在实例化时也是会调用抽象父类的构造器。

子类继承抽象类,重写实现抽象方法,抽象类和抽象方法可以看似框架,子类是去实现具体的内容

private static final不能与abstract同时修饰,被abstract修饰只有被继承或重写才有意义,而这三个修饰符是不能被继承或重写的

抽象类的普通方法也像继承一样可以供子类调用或重写

posted @   hello_12153_98  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示