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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵文杰 山林野马   /  2012-5-13 08:20  /  5457 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                        抽象类的特点什么?

6 个回复

正序浏览
1、抽象类不能直接实例化,并且对抽象类不能使用 new 运算符。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。  
2、允许抽象类包含抽象成员。  
回复 使用道具 举报
梁俊 黑马帝 2012-11-29 16:20:47
地板
抽象类的特点:
1,抽象方法一定在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以被new创建对象,因为调用抽象方法没有意义。
4,抽象类中的方法要被使用,必须由子类复写起所有抽象方法后,建立子类对象调用
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象方法

抽象类和一般类没有太大的不同。
该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西。
这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。
通过抽象方法来表示。
抽象类比一般类多了个抽象函数。就是在类中可以定义抽象方法
抽象类不可以实例化
特殊:
抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
回复 使用道具 举报
抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为 null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。  2、允许(但不要求)抽象类包含抽象成员。  3、抽象类不能被密封。
抽象类就是在类名和方法前必须加了修饰符abstract,这个方法是不具体的没有实现的,因为方法他是抽象的你不知道他要做什么,那么这个方法在这有什么用呢,这就需要一个满足is a关系的类来继承这个抽象类了,继承了有什么用呢,那么他就继承父类的非私有的成员方法和成员变量了,当然方法你继承的是抽象的,如果你对现在的对明确了,你就可以在这个子类重写父类方法,多个子类就可以有多个行为,如动物类是人类有一个方法 动物叫声的类,动物有很多,你不知道他是具体那种动物叫声,那么他就是不具体的,你就可以这样Public abstract vid work()他有一个子类  狗类Public void work(0{System.out.prinln("汪汪汪");//重写父类方法}Public abstract vid work()他有一个子类  猫类Public void work({System.out.prinln("喵喵喵");//重写父类方法}是不是就形成了多态了?
回复 使用道具 举报
一个抽象类必须用关键字abstract明确地声明。注意声明一个抽象类非常简单,它甚至不需要任何抽象方法。通过abstract的声明就等于告诉子类它在功能上是不完整的,所以不能创建它的实例。   例如,AWT中的Component类对于所有AWT用户界面元素来说是一个抽象父类。尽管它为所有的方法都提供了缺省的实现方案,但它却依然是抽象的。Component不能被直接实例化,相反它却提供了一个通用的体系结构,因此它的许多子类如Button,TextField可以被定义和初始化。
回复 使用道具 举报
简单的说,抽象类就是从一般类中抽取他们的共性封装成的类,所以抽象类的特点就像抽象的事物一样不是现实的不能被实例化
回复 使用道具 举报
抽象类就是在类名前加了修饰符abstract。如果这个类有方法是抽象方法也就是此方法使用abstract修饰的,那么此类就是抽象类。抽象方法没有方法主体,就是没有大括号,直接在小括号后面加分号。如:
  public abstract void sayHello();
就是抽象方法。
抽象类就是为了让子类继承的,它表示从一些具体类中抽象出来的类型。

象类的特点:抽象方法一定定义在抽象类中,抽象方法和抽象类都被abstract关键字修饰;抽象类不可以用new创建对象,因为没有意义;抽象类中的方法要被使用,必须有子类覆写所有的抽象方法后,建立子类对象调用;如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类;抽象类中即可有抽象类也可以有非抽象类。抽象类中可以不定义抽象方法,这种作用仅仅用于不让该类创建对象。

  抽象类事例:
            class Employee
            {
                  private string name;
                  private string id;
                  private double pay;
                   Employee(string name,string id,double pay)
                      {
                            this.name=name;
                            this.id=id;
                             this.pay=pay;
                      }
                   public abstract void work();
              }
            class Manager extends Employee
              {
                private int bonus;
                Manager(string name,string id,double pay,int bonus)
                        {
                           super(name,id,pay);
                            this.bonus=bonus;
                         }
                 public void work()
                    {
                          System.out.println("manager work");
                      }
              }
             class Pro extends Employee
               {
                   class Pro(string name,string id,double pay)
                        {
                           super(name,id,pay);
                         }
                   public void work()
                       {
                             System.out.println("Pro work");
                        }
                 }
                public class  AbstactDemo
                      {

                         public static void main(String[] args)
                                {
                                Manager man=new Manager(zhansan,01,100.00,400 );
                                    Pro p=new Pro(lisi,05,200.00);
                                    man.work();
                                    p.work();
                                  }
                      }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马