java抽象类

最近开始学习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();
    }
}

运行打印输出如下
运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值