抽象类
作者:互联网
抽象类
特点:不能创建对象只能被子类继承 使用的都是子类的对象 相当于模板
那么具体什么样的情况用抽象类的?
比如我有一个图形类,有一个抽象方法求图形的面积,那么问题来了?我圆形的面积公式 和 正方型的面积公式肯定是不一样。
图形类需要被正方形类继承然后重写求面积的方法。
abstract 修饰的类 叫做抽象类、
语法;
注意:
1.不能被实例化(不能创建对象);new
2. 普通的子类 继承 抽象父类 时, 必须 重写实现抽象父类中
的所有抽象方法;(但是抽象的子类除外)
3. 抽象类中的抽象 方法 可以定义也可以不定义;
4. 构造不能定义为抽象的;
5.abstract 是一个修饰符, 不能 private ,final ,static 一起连用。
练习:根据图形抽象类 求矩形 和三角形面积
package com.test.day17;
abstract class Graph{
private int chang;
private int kuan;
public abstract int area(int chang, int kuan);
public Graph() {
//super();
// TODO Auto-generated constructor stub
}
public Graph(int chang, int kuan) {
//super();
this.chang = chang;
this.kuan = kuan;
}
public int getChang() {
return chang;
}
public void setChang(int chang) {
this.chang = chang;
}
public int getKuan() {
return kuan;
}
public void setKuan(int kuan) {
this.kuan = kuan;
}
}
class roundness extends Graph{
//求矩形面积的办法 S= 长*宽
@Override
public int area(int chang, int kuan) {
// TODO Auto-generated method stub
return chang*kuan;
}
public roundness() {
//super();
// TODO Auto-generated constructor stub
}
public roundness(int chang, int kuan) {
//super(chang, kuan);
// TODO Auto-generated constructor stub
}
}
class triangle extends Graph{
//求三角形面积的办法 1/2 底* 高
private int tall;
private int bottom;
public triangle() {
//super();
// TODO Auto-generated constructor stub
}
public triangle(int tall, int bottom) {
//super(chang, kuan);
// TODO Auto-generated constructor stub
}
@Override
public int area(int tall, int bottom) {
return tall*bottom/2;
// TODO Auto-generated method stub
}
}
public class TestGraph {
public static void main(String[] args) {
// TODO Auto-generated method stub
triangle triangle = new triangle();
roundness roundness = new roundness();
System.out.println(triangle.area(4, 2));
System.out.println(roundness.area(4, 2));
}
}
标签:kuan,int,Auto,public,chang,TODO,抽象类 来源: https://blog.csdn.net/weixin_43006131/article/details/100938440