abstract抽象类的应用

/*
* 示例:
* 需求:公司中程序员有姓名,工号,薪水,工作内容。
* 项目经理有姓名,工号,薪水,奖金,工作内容。
* 对给出需求进行数据建模
*
*
* 分析
* 在这个问题领域中,先给出涉及的对象
* 通过名词提炼发。
* 程序员:姓名,工号,薪水
* 行为:工作
* 项目经理:姓名,工号,薪水,奖金
* 行为:工作
*
* 经理与程序员不存在直接继承关系(经理不是程序员)
* 但程序员和经理有共性内容
* 可以将程序员和经理进行抽取,建立体系
*/
abstract 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 Programmer extends Employee//定义一个程序员类,它与经理的共性内容直接继承了雇员类中的内容
{
    Programmer(String name,String id, double pay)
    {
        super(name,id,pay);//通过super关键字直接对name,id,pay进行初始化
    }
    public void work()
    {
        System.out.println("code...");//程序员的行为
    }
}

class Manager extends Employee
{
    private int bonus;
    Manager(String name,String id,double pay,int bonus)
    {
        super(name,id,pay);//对name,id,pay进行初始化
        this.bonus = bonus;//对自己的特有内容,需要用this来进行初始化
    }

public void work()
    {
        System.out.println("manage...");//经理的行为
    }
}

时间: 2024-10-09 22:10:34

abstract抽象类的应用的相关文章

final 和 abstract 抽象类

摘录 一. final修饰的类 不能被继承了  :因为是最终的类了  所有不能被继承 final修饰的方法 不能被重写了 :因为是最终的方法了 所有不能被重写了 二. 1.从定义上讲,用abstract关键字来修饰一个类时,这个类叫做抽象类,方法亦然2.含有抽象方法的类,必须被声明为抽象类.抽象类中不一定具有抽象方法3.抽象类中可以定义有具体实现的方法4.抽象类不能被实例化 抽象方法只需声明 不必实现5.子类继承父类的过程中,如果父类为抽象类,那么子类必须实现父类的抽象方法,否则子类必须声明为抽

abstract -- 抽象类

<?php /** *要充分发挥抽象类的特点,就必须牢记以下规则: *某个类只要包含至少一个抽象方法就必须声明为抽象类 *声明为抽象的方法,在实现的时候必须包含相同的或者更低的访问级别.例如,如果某个方法在抽象类中的访问级别是受保护的,在继承中它就必须是受保护的或者公共的,而不能是私有的. *不能使用new关键字创建抽象类的实力. *被声明为抽象的方法不能包含函数体. *如果将扩展的类也声明为抽象的,在扩展抽象类时,就可以不用实现所有的抽线方法.在创建具有层次结构的对象时,这种做法很有用的. *

Java之关键字abstract(抽象类与抽象方法)

/* * abstract关键字的使用 * 1.abstract:抽象的 * 2.abstract可以用来修饰的结构:类.方法 * * 3. abstract修饰类:抽象类 * > 此类不能实例化 * > 抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程) * > 开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作 * * * 4. abstract修饰方法:抽象方法 * > 抽象方法只有方法的声明,没有方法体 * > 包含抽象方法的类,一

Abstract抽象类 &amp;&amp; Interface接口

# 抽象类 ## 将相同的但是不确定的动作提取出来,抽象化,抽象类的意义在于,在子类中进行实现. ## 抽象类可以被继承,子类继承抽象类时,需要对抽象方法进行完全实现. ## 抽象方法不能有方法体. ## 抽象类中可以没有抽象方法. ## 当类中包含抽象方法时,该类必须是抽象方法. # 接口 ## 接口可以有多个方法,但是不能实现. ## 接口无法被实例化,但是可以被实现. ## 一个实现接口的类必须实现接口中所描述的所有的方法,否则声明问抽象类. ## 接口没有构造函数,接口不能包含成员变量,

2.匿名类,匿名类对象,private/protected/public关键字、abstract抽象类,抽象方法、final关键字的使用,多线程Thread类start方法原理

package com.bawei.multithread; //注意:模板方法我们通常使用抽象类或者抽象方法!这里我们为了方便在本类中使用就没有使用抽象类/抽象方法 public class TemplateThread { //如果这个方法不想被子类或者别人随意改动[这样子类就不能覆写该方法了],这里方法就要设置为final方法 public final void println(String message){ System.out.println("###################

PHP接口(interface)和抽象类(abstract)

interface 定义了一个接口类,它里面的方法其子类必须实现.接口是类的一个模板,其子类必须实现接口中定义的所有方法. interface User{ function getHeight($height); function getWeight($weight); } class my implements User{ function getHeight($username){ echo $height; } function getWeight($weight){ echo $weig

浅谈php 抽象类abstract和接口interface

一.抽象类(abstract) 抽象类定义的规范 1.php5支持抽象类和抽象方法 2.定义得抽象类无法被实例化 3.任何一个类里面声明了抽象方法,那么这个类必须声明为抽象类 4.被定义得抽象方法只能声明其调用方式(参数),不能定义其具体得功能实现 5.继续抽象类的子类必须定义父类(抽象类)所有的抽象方法,并且访问控制(public.protected)必须一致,或者更为宽松 如:父类protected,子类可以protected.public.父类是public,那么子类就只能是public,

接口与抽象类

首先声明,本文基本参考自 http://dev.yesky.com/436/7581936.shtml 加入从其他资料中获得的观点. 1从逻辑上说 抽象类描述了一系列"东西"的本质. 接口描述一系列"东西"应该具有的功能,或者说接口就是一组契约. 在oop的观点里,世界上任何实物都能在思想的角度给一个类与之配对,但反过来说,并不是思想中所有的类都能在现实世界里找到一个实物配对.(这里说的思想里的类 也是个逻辑概念 包括普通的类也包括抽象类 接口等等) 举个例子,我们

php面向对象之抽象类

抽象关键字:abstract 定义:一个类中至少有一个抽象方法,我们称之为抽象类,所以抽象类是以抽象方法为基础的,要定义抽象类首先定义抽象方法. abstract class person{ abstract function name(); ....... } 1.抽象类中必须有一个抽象方法 2.抽象方法不可以加{} 3.抽象方法前面要加abstract 抽象类的特点: 1.抽象类不能被实例化,只能被继承. 2.继承的派生类中要把所有的抽象方法重载才能被实例化.