自学java (day21):抽象类

/**
*   抽象类 :  无法实例化,无法创建对象
 *      1、什么是抽象类?
 *          --类和类之间具有共同特征,这些共同类之间提取出来的特征就是抽象类
 *          --类到对象是实例化,对象到类是抽象
 *          --类本身是不存在的,所以抽象类无法创建对象(无法实例化)
 *
 *      2、抽象类属于什么类型?
 *          --抽象类也属于引用数据类型
 *
 *      3、抽象类怎么定义?
 *          --语法:
 *              【修饰符列表】 abstract class 类名{
 *                  类体;
 *              }
 *
 *      4、抽象类是无法创建对象,无法实例化的,所以抽象类是用来被子类继承的
 *
 *      5、final 和 abstract 不能联合使用(一山不容二虎)
 *
 *      6、抽象类的子类也可以是抽象类
 *
 *      7、抽象类虽然无法实例化,但是抽象类里有构造方法,这个构造方法供子类使用
 *
 *      8、抽象类关联到一个概念: 抽象方法。什么是抽象方法呢???
 *          --抽象方法表示没有实现的方法,没有方法体的方法
 *              例如::public abstract void doSome();
 *          抽象方法的特点是:
 *                  特点1:没有方法体,以分号结尾
 *                  特点2:前面修饰符列表里有abstract关键字
 *
 *      9、抽象类中不一定有抽象方法,但是抽象方法必须存在于抽象类中
 * */
public class ChouXiangLei {
    public static void main(String[] args){
        //创建抽象类对象
        //Account act=new Account();//编译报错,Account是抽象的,无法创建对象,无法实例化

        //创建子类对象,来继承抽象类
        //CreditAccount cda=new CreditAccount();
    }
}

//银行账户类(这是一个抽象类)
abstract class Account{

    //非抽象方法
    public void doOther(){ }

    //抽象方法
    public abstract void withdraw();

}

//子类继承抽象类,子类可以实例化对象
/*
class CreditAccount extends Account{

}
 */

---------------------------------------------------------------------------------------------------------------------------------

import java.sql.SQLOutput;

//面试题::java语言中,凡是没有方法体的方法都是抽象方法。(x)
    //Object类中就有很多方法没有方法体,他们都是抽象方法,都是以“;”结尾的。
/**
 *  抽象类:
 *          1、抽象类中不一定有抽象方法,但是抽象方法必须存在于抽象类中
 *
 *          2、重要结论:*****
 *              一个非抽象的类去继承抽象类,必须将抽象类中的方法实现了
 *
 *          3、抽象子类可以去继承抽象父类,并继承抽象父类的抽象方法,
 *             非抽象子类要想去继承抽象父类的抽象方法,就需要在非抽象子类中,将抽象父类里的抽象方法进行重写(覆盖),也叫实现。
 *
 */

public class abstractTest {
    public static void main(String[] args){
        //使用多态
        //父类型引用子类型对象
        Animal a=new Bird();//面向抽象编程
        a.move();
    }
}

//动物类(抽象类)
abstract class Animal{
    //抽象方法
    public abstract void move();
}

//子类(非抽象)
/**
class Bird extends Animal{
    //分析错误:  父类是抽象的,里面有一个抽象方法,
    //          子类是非抽象的,并且子类去继承父类
    //          抽象方法只能出现在抽象类中,所以会编译报错

}
 */
//把子类也设置成抽象类,就可以继承抽象的父类了 还有二种写法
/*
class Bird extends Animal{

    重写(覆盖)从父类中继承过来的方法,把抽象方法实现了
    //将抽象类中的方法实现了
    public void move(){}
}*/
class Bird extends Animal{
    public void move(){
        System.out.println("鸟在飞!!!");
    }

}

/**
 * 这里是把子类型设置成抽象类 再去继承抽象父类
 *
 * abstract class Bird extends Animal{
 * }
 */

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值