黑马程序员----抽象类

来源:互联网 发布:数据库英文缩写 编辑:程序博客网 时间:2024/05/22 14:17


抽象类:
抽象:笼统,模糊,看不懂!不具体。

犬科怎么叫?是不是不确定,这个时候就要抽象了!只能明确它有这个能力!

定义!子类继承!!


中文编译能通过!!!!搞笑~~

这种类有,后期会说明!


————————————————————————————————————————————————————————————————————————

抽象关键字不可以和那些关键字共存?




private 不行(子类要覆盖的,私有隐藏了怎么覆盖?)
static 不行(static是不是就可以直接调用啊?调用抽象方法有意思?)
final 不行(水火不相容,abstract说我需要被覆盖的,final说你不能被覆盖,这不搞笑么?~~)



抽象类和一般类的异同点。
相同点:
抽象类和一般类都是用来描述事物的,都在内部定了成员。
不同:
1,一般类有足够的信息描述事物。
  抽象类描述事物的信息有可能不足。
2,一般类中不能定义抽象方法,只能定非抽象方法。
  抽象类中可定义抽象方法,同时也可以定义非抽象方法。
3,一般类可以被实例化。
  抽象类不可以被实例化。




5,抽象类一定是个父类吗?
是的。因为需要子类覆盖其方法后才可以对子类实例化。 




练习:

/*雇员示例:需求:公司中程序员有姓名,工号,薪水,工作内容。项目经理除了有姓名,工号,薪水,还有奖金,工作内容。对给出需求进行数据建模。分析:在这个问题领域中,找出相关的对象,通过名词提炼法程序员:属性:姓名,工号,薪水行为:工作经理:属性:姓名,工号,薪水,奖金行为:工作看得出来,程序员和经理有着共同的属性,但是他们不存在直接继承的关系(因为程序员该有的能力经理不一定要有)所以就对他们的共性内容进行一个抽取,建立一个体系。分析完成,开始进行描述!描述完后建立对象就成为实实在在的实例了!激情^.^~~*///首先是描述抽取的共性内容------雇员(公司里面的员工都是雇员嘛)abstract class Employee //因为带有抽象方法,所以此类是抽象类{private String name;private int pay;private int id;private int age;Employee(String name ,int pay, int id,int age){this.name = name;this.pay = pay;this.id = id;this.age = age;}//姓名获取设置方法public String getName(){return this.name;}public void setName(String name){this.name = name;}    //薪水获取、设置方法public int getPay(){return this.pay;}public void setPay(int pay){this.pay = pay;}//ID获取、设置方法public int getId(){return this.id;}public void setId(int id){this.id = id;}//年龄获取、设置方法public int getAge(){return this.age;}public void setAge(int age){this.age = age;}//员工都有工作,但是不具体是什么工作,抽象public abstract void work();}class Progammer extends Employee{Progammer(String name, int pay, int id , int age){super(name, pay, id , age);}public void work(){System.out.println("敲代码");}}class Manager extends Employee{private int bonus;Manager(String name, int pay, int id , int age,int bonus){super(name, pay, id , age);this.bonus = bonus;}//奖金获取、设置方法public int getBonus(){return this.bonus;}public void setBonus(int bonus){this.bonus = bonus;}//此方法是经理应有的能力,覆盖掉父类中的抽象类,具体起来public void work(){System.out.println("管理");}} class  AbstractDemo{public static void main(String[] args) {//System.out.println("Hello World!");Manager M = new Manager("张三",8000,123,40,10000);        Progammer P = new Progammer("李四",5000,520,25);System.out.println("经理的姓名是:"+M.getName()+"....薪水:"+M.getPay()+"....工号:"+M.getId()+"....年龄:"+M.getAge()+"....奖金:"+M.getBonus());System.out.println("程序员的姓名是:"+P.getName()+"....薪水:"+P.getPay()+"....工号:"+P.getId()+"....年龄:"+P.getAge());}}/*练习过程中的错误:1,调用方法的时候忘了添加括号,如:P.getAge   */






0 0