您的位置:首页 > 编程语言 > Java开发

java中的抽象类

2016-03-27 11:30 337 查看
<1>定义:只有函数的定义没有函数体的函数称为抽象函数

使用abstract定义的类称为抽象类

<2>基本语法:

第一条: 抽象类不能够生成对象(即不能new),它天生就是来作为父类的,可以被继承,其子类可以生成对象。

第二条:如果一个类中包含抽象函数,那么这个类必须被声明为抽象类.

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

<3>需注意:

当一个子类继承自抽象类时,需执行以下两种方法之一:

1.把该子类加上abstract,作为抽象类

2,复写父本的抽象方法(常用这种方法)

<4> 抽象类可以用构造函数

抽象类不能生成对象,

构造函数用于生成对象,

但抽象类可以有构造函数,其子类可以用super(参数)来调用

例子如下:

3个类,抽象父类:Person , 子类:Chinese ,测试类Test.

//定义一个抽象类Person

abstract class Person{

//成员变量

String name;

int age;

//抽象类可以有构造函数

Person(){

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

}

Person(String name , int age){

this.name = name;

this.age = age;

}

//抽象方法

abstract void eat();

}

//定义一个子类来继承抽象父类Person

//当继承一个抽象类时:要么把该子类也定义为抽象,要么复写父类的抽象方法,不然会报错

//第一种:只需加abstract,此处用第二种


class Chinese extends Person{

//增加一个成员变量

String address;

//Chinese的构造函数

Chinese(){

super();

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

}

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

super(name , age );

this.address = address;

System.out.println("我叫" + name + ", 今年" + age + "岁,家住在" + address );

}

//复写父类的抽象方法

void eat(){

System.out.println("我习惯用筷子吃饭");

}

}

//测试函数

class Test{

public static void main(String args [] ){

//(1)Person是抽象类,抽象是无法new实例的

//Person p = new Person();(错)

/*

(2)若用,abstract 来抽象化子类Chinese,当使用以下代码时会报错:Chinese是抽象的,无法实例化

Chinese c = new Chinese();

c.name = "张三";

c.age = 18;

c.eat();

*/

Chinese s = new Chinese();

s.name = "张三";

s.age = 18;

s.address = "广州";

s.eat();

}

}

结果:

Person的无参数构造函数

Chinese的无参数构造函数

我习惯用筷子吃饭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: