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

© 18334705181 高级黑马   /  2014-8-31 10:51  /  1271 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我不知道该怎么理解抽象这块,说实话,我在抽象这块已经纠结了好多天,难进行下去,求大师点化。。。。。。

4 个回复

倒序浏览
抽象和非抽象的区别就在于对事物的描述上,只要你需要描述的事物出现了一些你看不懂的东西,不确定的功能,但又需要明确出现,但是你又无法定义主体 就需要用抽象来定义。

简单来说就是 你想定义某个事物,你只知其然不知其所以然就可以用抽象来表示。

抽象类的特点:抽象方法一定定义在抽象类中,抽象方法和抽象类都必须被abstract关键字修饰,抽象类不可以用new创建对象,因为调用抽象方法没意义;
抽象类中的抽象方法要被使用,必须由子类覆写所有的抽象方法,建立子类对象调用,如果子类只覆写了部分 抽象方法,那么该子类还是一个抽象类。
抽象类比一般类多了抽象函数,在类中可以定义抽象方法,不可以实例化。
抽象类可以不定义抽象方法,仅仅是不让该类建立对象。

在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类去完成。
回复 使用道具 举报
子类继承了父类所有的东西,除了被private和final修饰了的,但父类里的方法一旦抽象,如果子类不去覆盖,就会继承,根据方法是抽象类必须是抽象的原理,这时候子类也变成抽象的了。那么子类对象就不能建立,没法使用。
回复 使用道具 举报
抽象类就是具有相同功能的类的共性的向上抽取。比如说一个公司里面有经理、文员、店长、普通员工等但是他们有一个共性就是他们都是人并且都具有姓名工号工作内容等所以我们就可以将这些共性的方面提取出来单独定义一个类这个类就是那些具有共性类的抽象类。比如说一个公司系统:
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
{
Pro(String name,String id,double pay)
{
  super(name,id,pay);
}
public void work()
{
  System.out.println("pro work");
}
}

回复 使用道具 举报
一句话,就是抽取需要解决问题的元素。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马