A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gcno93 中级黑马   /  2016-9-1 20:29  /  727 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
什么情况用抽象类呢?
  当我们描述一类事物的时候,发现该类事物确实存在着某种行为,但是这种
  行为有时不具体的,这时我们就可以抽取这种行为的声明,但是不去现实
  这一种行为,我们称之为抽象行为,我们要用到抽象类
抽象类要注意的事项
  1.如果一个函数不存在方法体,那么必须要用abstract修饰符来修饰成抽象方法!
  2.如果一个类里面存在抽象方法的话,那么该类也必须使用abstract!
  3.如果一个非抽象类继承了一个抽象类,那么该类必须实现该类
  所继承的抽象类的所有方法!
  4.抽象类里面可以存在抽象的方法和非抽象的方法!
  5.抽象类里面可以没有抽象方法
  6.抽象方法是不能实例化的,因为抽象方法是很有可能存在抽象方法,如果你
  让抽象方法创建实例,用实例去调用抽象方法是没有任何意义的
  7.抽象类是有构造函数的,此构造方法是给子类创建对象时初始化父类的属性的
抽象类不能与那些关键字组合修饰呢?
   不能与priavte         
       --因为抽象方法需要子类重写的,但是却被private修饰这样会自相矛盾
   不能与static
           --因为如果可以用static修饰,则可以利用类名.抽象函数,但是这样
           是毫无意义的
        不能与final
           --因为抽象方法需要子类重写的,但是却被fianal修饰这样会自相矛盾
*/


class ChouXiang {
        public static void main(String[] args) {
                Animal animal=new Animal();//错误: Animal是抽象的; 无法实例化(注意6)
                System.out.println("Hello World!");
        }
}
// Animal不是抽象的(注意2)
abstract class Animal {
        // 错误: 缺少方法主体, 或声明抽象(注意1)
        //public abstract  void eat();(注意5)注释这个抽象方法,程序并没报错

        //(注意6)
        public Animal(){

        }


        //抽象类里的非抽象方法(注意4)
        public void pao(){
                System.out.println("动物在跑");
        }
}
//错误: dog不是抽象的, 并且未覆盖Animal中的抽象方法eat()(注意3)
class dog extends Animal {
        public   void eat(){
                System.out.println("狗在吃");
        }
}

2 个回复

倒序浏览
很好的笔记
回复 使用道具 举报
这方面知识整理的全面,有帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马