java中的抽象类和抽象方法

一、 抽象类和抽象方法

1、 什么是抽象类?

• 由abstract修饰的类就是抽象类。

2、什么是抽象方法?

• 如果一个类中的方法,只有方法的定义而没有具体的方法实现,则称该方法为抽象方法。也就是说抽象方法没有方法体。即:没有{}。

接下来看一个例子

package com.jcxy.demo04;
/**
 * 
 * abstract修饰的类是抽象类
 *  
 * @author  Mr Wang
 * @version  [V1.00, 2015-12-6]
 * @see  show()
 * @since V1.00
 */
public abstract class AbstractDemo
{
    
    //定义的抽象方法,不能有具体的方法体
    public abstract void show();
    
    
    //编译报错,抽象方法必须要有abstract关键字修饰。一般为 public abstract 修饰
    //但是在eclipse中默认修饰符和protected也不会报错
//    void draw();//报错
    protected abstract void fly();
    
    
    //抽象方法绝对不能用private修饰,因为我们定义的目的是为了让子类来实现的,所以定义为私有会报错
//    private abstract void drive();//报错
    
    
}


3、 抽象类的特点:

• 3.1、由abstract修饰的类,就是抽象类。

• 3.2、抽象类中可以有抽象方法,也可以有具体方法及构造方法等。

• 3.3、抽象类不能实例化。只能声明抽象类引用其子类对象使用。

• 3.4、含有抽象方法的类,一定是抽象类;而抽象类不一定包含抽象方法。

• 3.5、抽象类中含有抽象方法,如果其子类没有全部重写抽象方法,则该子类必须被标识为抽象类。

 接下来看看它的特点

package com.jcxy.demo04;

public abstract class AbstractSon extends AbstractDemo1
{
    //1、继承抽象类必须全部实现抽象类中的抽象方法
//    public int getMax()
//    {
//        // TODO Auto-generated method stub
//        return 0;
//    }
//
//    public void getSun()
//    {
//        // TODO Auto-generated method stub
//        
//      }
    
    //2、如果只实现部分抽象方法则类必须声明为抽象方法
    public void getSun()
    {
    // TODO Auto-generated method stub
        int sum = 0;
        for(int i = 0; i <5; i++)
        {
            sum += i;
        }
    }
    
    public abstract int getMax();
    
}

接下来看看注意点:

●abstract可以和private, final, static其中一个或多个同时使用吗?

我们可以来验证一下

package com.jcxy.demo04;
/**
 * 既然是抽象,那肯定要在抽象類中完成。
 * 
 * <abstract可以和private, final, static其中一个或多个同时使用吗?>
 *  
 * @author  Mr Wang
 * @version  [V1.00, 2015-12-6]
 * @see  [相关类/方法]
 * @since V1.00
 */
public abstract class AbstractDemo2
{
    //1.abstract可以和private一起使用么
    private abstract void show();//编译报错,不可以
    
    //2.abstract可以和final一起使用么
    public abstract final void show1();//编译报错
    
    //3.abstract可以和static一起使用么
    public abstract static void show2();//编译报错
    
    /*
     * 总结:abstract方法只能与public、默认修饰符、protected搭配使用
     *    
     */
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值