java复习第十一天[抽象类]

抽象类的概念

简介:抽象类一般是用于继承的父类,里面包含了抽像的方法。

抽象类是一个抽象的类,那什么是抽象呢?在java中抽象指的是把像的部分抽出来,而抽象类就是把一个类像的部分抽出来,抽象类里独特的特征就是拥有抽像方法,在java中使用abstract来表示这是一个抽象的类或者方法,抽象的方法是有语句体的如:

//抽象类
public abstract class Tang{
    //抽像方法
    abstract void print();
}

注意:有抽象方法的类必然是抽象类,但抽象类可以没有抽象方法.

抽象类的用法

基础语法:

抽象类中的抽象放法没有方法体所以不能用static修饰,且如果子类继承抽象类,必须实现抽象类中的所有抽象方法如:

public abstract class People{
    //一个抽象方法
    public abstract void sleep();
}

class Student extends People{
    @Override
    public void sleep() {       //强制要求重写抽象方法
        System.out.println("早睡早起");
    }
}

这里可以看到抽象的方法一定是要被子类重写的,包括类是一定要被继承的否则抽象类就没有意义了,所以不管是抽象方法还是抽象类都不能使用final去修饰.

实例化抽象类

抽象类是不可以被直接去实例化的如:

因为抽象类中的抽象方法是没有方法体的所以不能直接实例化,那我们只要实现了抽象方法就可以实例化抽象类了,那实例化抽象类的方法有两种:实现抽象方法的子类像上转型,或者实例对象时直接重写抽象方法:

子类向上转型:

public abstract class People{
    //一个抽象方法
    public abstract void sleep();
}

class Student extends People{
    @Override
    public void sleep() {       //强制要求重写抽象方法
        System.out.println("早睡早起");
    }
}

class Test{
    public static void main(String[] args) {
       People people=new Student();
       people.sleep();
    }
}

这里可以运用多态所学的知识,通过向上转型来去间接的实例化抽象方法.

对象重写抽象方法:

public abstract class People{
    //一个抽象方法
    public abstract void sleep();
}

class Test{
    public static void main(String[] args) {
        People people=new People() {
            @Override
            public void sleep() {
                System.out.println("好好睡觉");
            }
        };
        people.sleep();
    }
}

这样写会极大的降低代码的复用性不推荐,建议使用第一种.

抽象类中构造器存在吗?

在抽象类中构造器是存在的,因为抽象类其实之比普通的类多了一个抽象的方法其他的组织基本都是一样的,可以有普通方法,成员变量,所以构造器是存在的

public abstract class People{
    public People(){
        System.out.println("平平无奇的构造器");
    }
    //一个抽象方法
    public abstract void sleep();
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123小步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值