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

java抽象类

2016-05-05 13:34 531 查看
最近开始学习java,由于有过oc,c++语言的基础,学习期java来相对比较轻松,这也验证了一句话,面向对象的语言基本上是相通到的。下面我们进入正题。

抽象类和接口是面向对象程序设计的两种十分重要的机制,与类比较,是更高层次的抽象,两者在本质上具有相似之处。

抽象类

在面向对象的程序设计中,所有对象都是通过类来描述的(java是一门纯面向对象的编程语言),但并不是所有类都是用来描述对象的。一个类中没有包含足够的信息来描述一个具体的对象,我们称这样的类为抽象类。

下面来看一下在java中是如何定义一个抽象类的:

<#这里是访问权限#> abstract class <#这里是类名#>{ //通过abstract关键字来定义一个 类为抽象类
<#这里是访问权限#> <#这里是参数类型#> <#这里是参数名#>;//参数声明
<#这里是访问权限#> abstract <#这里是函数返回值类型#> <#这里是函数名#> (<#形参列表#>);//声明方法,注意要用abstract关键字修饰且没有方法体
}


java中抽象类有以下几种使用规则:

1.abstract关键字可以修饰方法以及类,被abstract关键字修饰的类即抽象类,同样被abstract关键字修饰的方法就是抽象方法,抽象方法只有方法的声明,没有方法体,这是要特别注意的;

2.抽象类无法实例化一个对象,只能声明引用变量(设Animal是一个抽象类那么 Animal animal;这是合法的但是 Animal animal = new Animal();这样写是非法的);

3.含有抽象方法的类必须声明为抽象类,抽象类可以不含有抽象方法;

4.定义抽象类的主要目的是在定义新类时继承该抽象类。通过继承由其子类来发挥作用,当子类继承时,必须实现抽象类中的所有抽象方法,否则子类也要声明成抽象类。

下面我们来看一个运用抽象类的例子:

/**
* Animal类,所有动物类的抽象父类
*
*
*/
public abstract class Animal {
int legs;
public Animal (int legs) {
this.legs = legs;
}
public abstract void walk();
public abstract void eat();

}


/**
* Spider类,继承自Animal类
*
*
*/
public class Spider extends Animal {
int legs;
public Spider(int legs) {
super(legs);
this.legs = legs;
System.out.println("Spider has "+ legs +" legs");
}

@Override
public void walk() {
System.out.println("Spider is walking!");

}

@Override
public void eat() {
System.out.println("Spider is eating!");

}

}


/**
* AnimalTest测试代码
*
*
*/
public class AnimalTest {

public static void main(String []args) {
AnimalTest animalTest = new AnimalTest();
animalTest.spiderTest();
}
public void spiderTest() {
Spider splider = new Spider(8);
splider.walk();
splider.eat();
}
}


运行打印输出如下

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