Java面向对象-抽象类和抽象方法

在这里插入图片描述


Java面向对象-抽象类和抽象方法

1、代码案例展示

1、在一个类中会有一类方法,无需重写,直接使用
2、在一个类中会有一类方法,会对这个方法进行重写
3、一个方法的方法体去掉,然后被abstract修饰,那么这个方法就变成了一个抽象方法

在这里插入图片描述
4、一个类中如果有抽象方法,那么这个类也要变成一个抽象类
5、一个抽象类中可以有0个或者n个抽象方法
6、抽象类可以被其他类继承
7、一个类继承一个抽象类,那么这个类可以变成抽象类
8、一般子类不会加abstract修饰,一般让子类重写父类中的抽象方法
9、子类继承抽象类,就必须全部的抽象方法
10、子类如果没有重写父类的全部抽象方法,那么子类可以变成一个抽象类

在这里插入图片描述
11、创建抽象类的对象:抽象类不可以创建对象
在这里插入图片描述
12、创建子类对象
在这里插入图片描述
13、多态的写法
在这里插入图片描述

package com.msb_abstract;

//4、一个类中如果有抽象方法,那么这个类也要变成一个抽象类
//5、一个抽象类中可以有0个或者n个抽象方法
public abstract class Person {
    //1、在一个类中会有一类方法,无需重写,直接使用
    public void eat() {
        System.out.println("eat");
    }

    //2、在一个类中有一类方法,会对这个方法进行重写
    //3、一个方法的方法体去掉,然后被abstract修饰,那么这个方法就变成了一个抽象方法
    public abstract void say();

    public abstract void sleep();
}

//6、抽象类可以被其他类继承
//7、一个类继承一个抽象类,那么这个类可以变成抽象类
//8、一般子类不会加abstract修饰一般让子类重写父类中的抽象方法
//9、子类继承抽象类,就必须全部的抽象方法
//10、子类如果没有重写父类的全部抽象方法,那么子类可以变成一个抽象类。
class Student extends Person {
    @Override
    public void say() {
        System.out.println("say...");
    }

    @Override
    public void sleep() {
        System.out.println("sleep...");
    }
}

class Demo {
    public static void main(String[] args) {
        //11、创建抽象类的对象:抽象类不可以创建对象
        //Person p = new Person();
        //12、创建子类对象
        Student st = new Student();
        st.say();
        st.sleep();

        //13、多态的写法
        Person p = new Student();
        st.say();
        st.sleep();
    }
}

2、抽象类和抽象方法的关系:

一个抽象类中可以有0个或者n个抽象方法
抽象类的作用:
在抽象类中定义抽象方法,目的是为子类提供一个通用的模板,子类可以在模板的基础上进行开发,先重写父类的抽象方法,然后可以扩展子类自己的内容,抽象类设计避免了子类设计的随意性,通过抽象类,子类的设计变得更加严格,进行某些程度上的限制,使子类更加的通用。

面试题:
1、抽象类不能创建对象,那么抽象类中是否有构造器?
抽象类中一定有构造器,作用:给子类对象初始化对象的时候要先super调用父类的构造器。
2、抽象类是否可以被final修饰?
不能被final修饰,因为抽象类设计的初衷就是给子类继承使用的,要是被final修饰了,就不存在继承了,就没有子类了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码敲到头发茂密

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

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

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

打赏作者

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

抵扣说明:

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

余额充值