Java SE:面向对象(下):抽象类

抽象类是面向对象(下)中十分重要的内容,也是后面学习接口的基础,务必掌握扎实。大二初学java,若有错误,欢迎各位大佬批评指正,不胜感激!

抽象类:

概念:如果一个类没有足够的信息来描绘一个具体的对象,这样的类就是抽象类。

语法:Public abstract class 类名       abstract public 返回值类型+方法名  

(1):定义了一个抽象父类Shape,分别定义了draw方法和getArea方法,抽象方法的修饰符不能是private修饰,也不能被final和static修饰,因为其抽象方法要被子类重写。下面定义了一个double类型的area变量。

【1】:抽象类必须被继承。

【2】:一个类继承了这个抽象类之后,这个普通类一定要重写这个抽象类中所有的抽象方法,否则子类也是抽象类,必须用abstract修饰。

【3】:抽象方法不能有方法体。

第11行代码:抽象类也是类,也可以有普通的方法和属性,甚至构造方法。

9fc1fc39214c45bda586b96bffbb7c85.png

(2):定义了一个Rect子类,继承父类Animal,分别定义了一个length变量和width变量,然后给出了一个有参构造方法,通过this关键字引用。再重写draw方法打印矩形的基本信息,重写getArea方法返回矩形的面积。 

6743249e129f42e1b2bf36687f6420fa.png

(3):定义了一个Circle子类,继承父类Animal,同时定义了一个变量r,给出了一个有参构造方法,通过this关键字引用。重写draw方法打印圆的基本信息,再重写getArea方法,返回圆的面积。

b087a42575b54429b271646aab45ed49.png

(4):最后的测试类Test2,在main方法中 ,通过向上转型分别给出了一个rect和circle变量,注意:抽象类不能直接通过new关键字实例化对象,所以在此向上转型;并将其赋值,然后分别调用draw方法。之后调用getArea方法得到面积并打印语句。

306c292a32a7475f87ffbe26d8acfce5.png

(5):输出结果:

第18、19行代码:抽象类也是类,也可以有普通的方法和属性,甚至构造方法。3d9852f88690455893cac78cf37cad16.png

(6)抽象类的作用:

使用抽象类相当于多了一重编译器的校验,很多时候实际工作不应该由父类去完成,应该由子类去完成,那么如果此时我们不小心误用成父类了,使用普通编译器是不会报错的。但是父类是抽象类实例化就会报错,让我们尽早发现问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值