首页 / JAVA / java基础()之抽象类和抽象函数
java基础()之抽象类和抽象函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java基础()之抽象类和抽象函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2147字,纯文字阅读大概需要4分钟。
内容图文
![java基础()之抽象类和抽象函数](/upload/InfoBanner/zyjiaocheng/1255/e99c8ae81ac74994bf0cc9b49bcd9cc6.jpg)
1、抽象函数的语法特征
2、抽象类的语法特征
3、抽象类的作用
抽象函数
只有函数的定义,没有函数体的函数被称为抽象函数;
abstract void func();
抽象类
使用abstract定义的类称为抽象类。
abstract class Person{}
注意:
1、抽象类不能够生成对象;
2、如果一个类当中包含有抽象函数,那么这个类必须被声明为抽象类。
3、如果一个类当中没有抽象函数,这个类也可以被声明为抽象类。
下面来用一个例子说明下:
Person.java:
abstract class Person{ String name; int age; void intruduce(){ System.out.println("My name is" + name + ",my age is " + age); } abstract void eat(); }
Chinese.java
class Chinese extends Person{ void eat(){ System.out.println("use chopsticks."); } }
Test.java:
public class Test{ public static void main(String[] args){ Person p = new Chinese(); p.eat(); } }
输出结果:
PS C:\Users\admin\Desktop\java_code\练习八> java Test use chopsticks.
抽象类可以有构造函数
Person.java
abstract class Person{ String name; int age; Person(){ System.out.println("Person"); } void intruduce(){ System.out.println("My name is" + name + ",my age is " + age); } abstract void eat(); }
Chinese.java
class Chinese extends Person{ Chinese(){ System.out.println("Chinese"); } void eat(){ System.out.println("use chopsticks."); } }
输出结果:
PS C:\Users\admin\Desktop\java_code\练习八> java Test Person Chinese use chopsticks.
这是因为会自动加上super();
class Chinese extends Person{ Chinese(){ super(); System.out.println("Chinese"); } void eat(){ System.out.println("use chopsticks."); } }
那么为什么要使用抽象类呢?
可以使语义和语法的错误达成统一。
class Printer{ void open(){ System.out.println("open"); } void close(){ System.out.println("close"); } void print(){ } }
class HPPrinter extends Printer{ void print(){ System.out.println("Using HPPrinter."); } }
class CanonPrinter extends Printer{ void print(){ System.out.println("Using CanonPrinter."); } }
PS D:\Java\code\练习七> java Test open Using HPPrinter. close open Using CanonPrinter. close
这样写是没问题的,但是如果开发者不是一个人的话,那么就会产生一个问题,在子类中没有复写函数的话,编译器并不会报错。因此修改
abstract class Printer{ void open(){ System.out.println("open"); } void close(){ System.out.println("close"); } abstract void print(); }
如果子类中没有复写函数的话,就会报如下的错误:
PS D:\Java\code\练习七> javac .\Test.java .\HPPrinter.java:1: 错误: HPPrinter不是抽象的, 并且未覆盖Printer中的抽象方法print() class HPPrinter extends Printer{ ^ 1 个错误
原文:https://www.cnblogs.com/endust/p/11823298.html
内容总结
以上是互联网集市为您收集整理的java基础()之抽象类和抽象函数全部内容,希望文章能够帮你解决java基础()之抽象类和抽象函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。