Java_抽象类
创始人
2024-01-31 17:36:33
0

目录

1.抽象类语法

2.抽象类特性

3.抽象类的作用

抽象类概念:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。比如:

在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际工作, 主要的绘制图形都是由 Shape 的各种子类的 draw 方法来完成的。像这种没有实际工作的方法, 我们可以把它设计成一个抽象方法(abstract method), 包含抽象方法的类我们称为抽象类(abstract class)。

abstract class Shape {public abstract void draw();
}
class Rect extends Shape {@Overridepublic void draw() {System.out.println("画矩形!");}
}
class Cycle extends Shape {@Overridepublic void draw() {System.out.println("画圆!");}
}
public class Test {public static void drawShape(Shape shape) {shape.draw();}public static void main(String[] args) {//Shape shape = new Shape();抽象类不能实例化drawShape(new Rect());drawShape(new Cycle());}
}

 

1.抽象类语法

在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。 

//抽象类:被abstract修饰的类
public abstract class Shape {//抽象方法:被abstract修饰的方法,没有方法体abstract public void draw();abstract void calcArea();// 抽象类也是类,也可以增加普通方法和属性public double getArea(){return area;}protected double area; // 面积
}

注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法

2.抽象类特性

1)抽象类不能直接实例化对象;

2)抽象方法的修饰限定符不能是 private 的;

abstract class Shape {abstract private void draw();
}
// 编译出错
//Error:(4, 27) java: 非法的修饰符组合: abstract和private

3)抽象方法不能被final和static修饰,因为抽象方法要被子类重写;

4)抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰(即当一个子类没有重写父类中的抽象方法,可以把当前子类变为 abstract 修饰,但是当这个子类被另一个类继承时,继承子类的这个类还是得重写之前父类的抽象方法);

5)抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类;

6)抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量。

3.抽象类的作用

抽象类本身不能被实例化,要想使用,只能创建该抽象类的子类,然后让子类重写抽象类中的抽象方法。

普通的类也可以被继承呀, 普通的方法也可以被重写呀, 为啥非得用抽象类和抽象方法呢? 确实如此,但是使用抽象类相当于多了一重编译器的校验。使用抽象类的场景就如上面的代码, 实际工作不应该由父类完成, 而应由子类完成。那么此时如果不小心误用成父类 了, 使用普通类编译器是不会报错的,但是父类是抽象类就会在实例化的时候提示错误, 让我们尽早发现问题。很多语法存在的意义都是为了 "预防出错", 例如我们曾经用过的 final 也是类似。创建的变量用户不去修改, 不就相当于常量嘛? 但是加上 final 能够在不小心误修改的时候, 让编译器及时提醒我们。充分利用编译器的校验, 在实际开发中是非常有意义的。

相关内容

热门资讯

小城大市|传统果品在“养生赛道...   一杯养生茶,连接起田间地头与消费市场;两颗小果实,承载着产业升级与乡村振兴。  在广西桂林的青山...
美国防官员称或向明尼苏达州部署...   新华社洛杉矶1月17日电(记者高山)美国媒体17日晚援引美国国防官员消息报道称,大约1500名来...
多地年宵花市逐渐升温“新”意涌...   央视网消息:距离马年春节还有不到一个月,全国各地年宵花市场日渐红火。在北京,喜庆花卉植入五花马造...
【好评中国】秦平 | 10万亿...   国家能源局1月17日宣布,2025年我国全社会用电量历史性突破10万亿千瓦时,达到10.4万亿千...
视频丨美明尼苏达州抗议和冲突持...   美国明尼阿波利斯等地的抗议和冲突已持续多日,局势紧张。美国联邦政府与民主党主政的明尼苏达州政府等...
美国白宫经济顾问:调查鲍威尔不...   据美国方面16日消息,美国白宫国家经济委员会主任凯文・哈西特表示,他预期司法部对美国联邦储备委员...
专访|“中国仍是全球经济增长的...   新华社日内瓦1月18日电 专访|“中国仍是全球经济增长的最大贡献者”——访世界经济论坛总裁博尔格...
砥砺奋进 建设更高水平平安中国   央视新闻客户端消息(新闻联播):建设更高水平平安中国,事关人民美好生活、事关国家长治久安。202...
主播说联播丨10万亿度电的“新...   突破10万亿度!2025年,我国全年全社会用电量迈上新台阶,规模继续保持世界第一。  用电总量,...
封关首月洋浦港进出港船舶351...   记者从洋浦海事局获悉,海南自贸港封关首月,各项业务平稳过渡,海上交通动脉安全高效运行。首月共保障...