java抽象函数_课程6.0之抽象类和抽象函数

本节课程将学习以下内容:

抽象函数的语法特征

抽象类的语法特征

抽象类的作用

抽象函数的语法特征

定义:

只有函数的定义(返回值类型、函数名、参数列表),没有函数体的函数被称为抽象函数。

特点:

如果一个类中有一个或者一个以上的抽象函数,那么这个类也必须被定义为抽象类;

格式:

abstract void function();

抽象类的语法特征

定义:

使用abstract定义的类(在class前加上abstract关键字)称之为抽象类。

特点:

抽象类天生就是用来被继承的,俗称基类;抽象类的子类也必须声明为抽象的,或者,必须在子类中复写父类中的抽象函数;

抽象类不能够生成对象;但抽象类可以有构造函数,它可以在子类中被调用;(重要)

如果一个类当中包含有抽象函数,那么这个类必须被声明为抽象函数;

如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类。

例子1:(请动手)

创建一个名为Person.java的Java源文件:

abstract class Person{

String name;

int age;

Person(){

System.out.println("Person的构造函数");

}

Person(String name, int age){

this.name = name;

this.age = age;

System.out.println("Person的2个参数构造函数");

}

void introduce(){

System.out.println("我的名字叫 " + this.name + ",我的年龄是 " + this.age);

}

//抽象函数

abstract void eat();

}

2.创建一个名为Chinese.java的Java源文件:

class Chinese extends Person {

String address;

Chinese(){

System.out.println("Chinese的构造函数");

}

Chinese(String name, int age, String address){

super(name, age);

this.address = address;

System.out.println("Chinese的3个参数构造函数");

}

// Chinese这个子类复写了Person中的抽象函数eat(),

// 复写后的eat()函数不再是抽象函数,

// 因此,Chinese类中没有抽象函数,它也不需要声明为抽象类。

void eat(){

System.out.println("用筷子吃饭!");

}

}

3.创建一个名为Demo01.java的Java源文件:

class Demo01 {

public static void main(String[] args) {

// 子类的对象赋值给父类的引用,这是向上转型。

Person p01 = new Chinese();

p01.eat();

}

}

抽象类的作用

作用:

父类无法完成的函数具体功能,就声明为抽象函数,让子类复写实现(必须);

通过方法的复写实现了多态的属性。

例子2:(请动手)

1.新建一个Printer.java的Java源文件:

abstract class Printer{

void open(){

System.out.println("open");

}

void close(){

System.out.println("close");

}

// 抽象函数print()

abstract void print();

}

2.新建一个HpPrinter.java的Java源文件:

// 该惠普打印机为喷墨打印机

class HpPrinter extends Printer{

// 重写父类的抽象方法print()方法

void print(){

System.out.println("使用惠普喷墨打印机进行打印");

}

}

3.新建一个CanonPrinter.java的Java源文件:

// 该佳能打印机为针式打印机

class CanonPrinter extends Printer{

// 重写父类的抽象方法print()方法

void print(){

System.out.println("使用佳能针式打印机进行打印");

}

}

4.新建一个Demo01.java的Java源文件:

// 该佳能打印机为针式打印机

class Demo01{

public static void main(String[] args) {

Printer hp = new HpPrinter(); // 向上转型

hp.open();

hp.print();

hp.close();

Printer cannon = new CanonPrinter();

cannon.open();

cannon.print();

cannon.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值