抽象函数 java_java基础(十一)之抽象类和抽象函数

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 个错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值