Java面向对象之抽象类abstract 入门实例

一、基础概念

  抽象事物,是若没有具体的信息可以描述这个事物,这个事物可以称为抽象事物。

  抽象类,是不断的向上抽取而来。抽取方法声明而不确定具体的方法内容。由不同的子类来完成具体的方法内容。

  (一)抽象类的特点:

    1、抽象方法没有方法体,必须由抽象关键字abstract来修饰。

    1、抽象方法一定是存在于抽象类中,必须有抽象关键字abstract来修饰。

    2、抽象类不能实例化。不能用new关键字创建对象。

    3、子类必须覆盖抽象类中的所有抽象方法后,才可以实例化。否则该子类还是一个抽象类。

  (二)抽象类中可以有构造函数:

    因为抽象类不能创建对象,所有抽象类中的构造函数是不能给抽象类的对象进行实例化。但是抽象类可以有子类,抽象类的构造函数可以子类的对象进行初始化。所有抽象类中可以有构造函数。

  (三)抽象类和一般类的区别:

    抽象类可以描述事物的属性和行为。描述事物的信息不具体,可以定义抽象方法,但不能进行实例化。

    一般类可以描述事物的属性和行为。事物的信息是具体的,不可以定义抽象方法,但可以进行实例化。

  (四)抽象类一定是个父类:

    因为必须需要子类覆盖抽象方法后,才可以实例化。才能使用这些方法。

  (五)抽象类中是可以不定义抽象方法的:

    这时的抽象类的功能,仅仅是让该类不能创建对象。

  (六)抽象关键字abstract和那些关键字不能共存的:

      关键字final、关键字private、关键字static。

二、实例代码

  要求:公司中有程序员和项目经理。程序员有姓名、工号和薪水。并为公司进行工作。项目经理除了有姓名、工号和薪水外还有奖金。也为公司进行工作。对给出的需求进行数据建模。

  分析:

  程序员:属性:姓名、工号、薪水

      行为:工作

  项目经理:属性:姓名、工号、薪水、奖金
       行为:工作

  两者不存在所属关系,但是有共性内容,可以向上抽取为雇员。

  雇员:属性:姓名、工号、薪水

     行为:工作

 1 //抽象类 Employee
 2 abstract class Employee
 3 {
 4     private String name;
 5     private int id;
 6     private double pay;
 7
 8     public void setName(String name)
 9     {
10         this.name = name;
11     }
12     public void setId(int id)
13     {
14         this.id = id;
15     }
16     public void setPay(double pay)
17     {
18         this.pay = pay;
19     }
20
21     public String getName()
22     {
23         return name;
24     }
25     public int getId()
26     {
27         return id;
28     }
29     public double getPay()
30     {
31         return pay;
32     }
33
34     Employee(String name,int id,double pay)
35     {
36         this.name = name;
37         this.id = id;
38         this.pay = pay;
39     }
40
41     //抽象方法 work
42     public abstract void work();
43 }
44
45 //描述程序员继承抽象类 Employee
46 class Programmer extends Employee
47 {
48     Programmer(String name,int id,double pay)
49     {
50         super(name,id,pay);
51     }
52     public void work()
53     {
54         System.out.println("name: "+this.getName()+"  id: " +this.getId()+"  pay: "+this.getPay() );
55         System.out.println("Programmer work ......");
56     }
57
58 }
59
60
61 //描述项目经理继承抽象类 Employee
62 class Manager extends Employee
63
64 {
65     private double bonus;
66
67     Manager(String name,int id,double pay,double bonus)
68     {
69         super(name,id,pay);
70         this.bonus = bonus;
71     }
72     public void work()
73     {
74         System.out.println("name: "+this.getName()+"  id: " +this.getId()+"  pay: "+this.getPay()+"  bonus: " +bonus);
75         System.out.println("Manager work  ......");
76     }
77 }
78
79 class AbstractDemo
80 {
81      public static void main(String[] args)
82      {
83          Programmer a = new Programmer("xiaoming",001,5000.00);
84          a.work();
85          Manager m = new Manager("xiaohong",010,8000.00,600.00);
86          m.work();
87      }
88 }

三、代码执行

  

原文地址:https://www.cnblogs.com/zhuxr/p/8910360.html

时间: 2024-10-29 03:48:03

Java面向对象之抽象类abstract 入门实例的相关文章

Java面向对象之关键字static 入门实例

一.基础概念 静态关键字 static 是成员修饰符,直接用于修饰成员. (一)特点: 1.被静态修饰的成果,可以直接被类名所调用. 2.静态成员优先于对象存在. 3.静态成员随着类的加载而加载.随着类的消失而消失.静态成员的生命周期很长. (二)注意事项: 1.静态方法只能访问静态成员,不能访问非静态成员. 2.静态方法中不能出现this或者super关键字. 3.主函数是静态的. (三)什么时候用: 1.成员变量:如果数据在所有对象中都是一样的.直接用静态修饰. 2.成员函数:如果函数没有访

Java 语法 索引 ----- 抽象类(Abstract)

abstract class Shape { public int x = 100, y = 100; public abstract int getArea(); } class Rectangle extends Shape { @Override public int getArea() { return x * y; } } 参考文献: Java Quick Syntax Reference by Mikael Olsson Java 语法 索引 ----- 抽象类(Abstract)

Java中的抽象类abstract

abstract定义抽象类 abstract定义抽象方法,只需要声明,不需要实现 包含抽象方法的类是抽象类 抽象类中可以包含抽象方法,也可以包含普通方法 抽象类不能直接创建,可以定义父类引用变量指向子类的对象 子类继承抽象类,必须实现父类中的抽象方法 抽象类的应用场景: 1.父类只知道子类应该包含的方法,但是不知道子类如何去实现这些方法,约束子类必须有哪些方法,但是并不关心它如何实现. 2.从多个具有相同特征的类中抽象出一个抽象类,以抽象类作为子类的模板,避免子类设计的随意性 package c

Java 面向对象编程 抽象类 抽象方法 abstract

抽象类 通过abstract定义的方法是抽象方法,它只有定义,没有实现.抽象方法定义了子类必须实现的接口规范: 定义了抽象方法的class必须被定义为抽象类,从抽象类继承的子类必须实现抽象方法: 如果不实现抽象方法,则该子类仍是一个抽象类: 面向抽象编程使得调用者只关心抽象方法的定义,不关心子类的具体实现. 如果父类的方法本身不需要实现任何功能 ,仅仅是为了定义方法签名,目的是让子类去覆写它,那么,可以把父类的方法声明为抽象方法.声明关键词abstract abstract class Pers

Java面向对象之抽象类

抽象类: 使用了abstract关键字所修饰的类叫做抽象类.抽象类无法实例化,也就是说,不能new出来一个抽象类对象 抽象方法(abstract method):使用abstract关键字所修饰的方法叫做抽象方法 1.抽象方法,有声明,没有实现,方法后面的分号不能省: 2.抽象方法需要定义在抽象类中:相对于抽象方法,之前多定义的方法叫做具体的方法(有声明,有实现): 如果一个类包含了抽象方法,那么这个类一定是抽象类. 如果一个类是抽象类,那么该类可以包含具体方法(有声明,有实现): 如果一个类中

Java面向对象之抽象类,接口

抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 抽象方法: 声明而未被实现的方法 抽象类不能被实例化 子类实现不了, 由下一级子类去实现, 当前类声明为抽象类, 继承的这个方法声明为抽象方法 抽象方法的权限修饰符必须为public abstract //人类 public class Person { private String name; //自定义属性 引用类型 宠物

java面向对象(抽象类)

一.抽象类的概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 方法功能声明相同,但方法功能主体不同.那么这时也可以抽取,但只抽取方法声明,不抽取方法主体.那么此方法就是一个抽象方法. 当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类. 二.抽象类和抽象方法的定义 //抽象方法定义的格式: public abstract 返回

Java中为什么有abstract interface 修饰类?

如果有人问你为什么有abstract interface 修饰类,答案一定是他看到的这种方式一定是反编译出来的结果.实际中abstract interface和interface修饰的类没有区别. 下面就上面的问题,介绍下抽象接口的概念. 在程序设计过程中,读者很可能遇到这样一种困境:设计了一个接口,但实现这个接口的子类并不需要实现接口中的全部方法,也就是说,接口中的方法过多,对于某些子类是多余的,我们不得不浪费的写上一个空的实现. 今天小菜提到的“抽象接口”,就是用来解决这个问题的. 为了不误

java面向对象编程(八)--抽象类、接口

1.抽象类 1.1抽象类概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]. //抽象类的必要性[Demo124.java] public class Demo124 { public static void main(String[] args) { //Animal an=new Animal();抽象类不允许实例化 Animal an=new Cat(); an.cry(); an=new Dog(); an.cr