zoukankan      html  css  js  c++  java
  • Java基础九--抽象类

    Java基础九--抽象类

    一、抽象类介绍


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

    特点:
    1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰。
    抽象方法必须定义在抽象类中。该类必须也被abstract修饰。
    2,抽象类不可以被实例化。为什么?因为调用抽象方法没意义。
    3,抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化。
    否则,这个子类还是抽象类。


    1,抽象类中有构造函数吗?
    有,用于给子类对象进行初始化。



    2,抽象类可以不定义抽象方法吗?
    可以的。 但是很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类。
    通常这个类中的方法有方法体,但是却没有内容。

    abstract class Demo
    {
    void show1()
    {}

    void show2()
    {}
    }

    3,抽象关键字不可以和那些关键字共存?
    private 不行
    static 不行 如果是静态的话不需要对象,而抽象类就是需要对象的
    final 不行

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


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


    */

    abstract class Demo
    {
    abstract /*抽象*/ void show();

    }

    /*

    class DemoA extends Demo
    {
    void show()
    {
    System.out.println("demoa show");
    }
    }
    class DemoB extends Demo
    {
    void show()
    {
    System.out.println("demob show");
    }
    }
    */
    abstract class 犬科
    {
    abstract void 吼叫();
    }

    class 狗 extends 犬科
    {

    void 吼叫()
    {
    System.out.println("汪汪");
    }
    }
    class 狼 extends 犬科
    {
    void 吼叫()
    {
    System.out.println("嗷嗷");
    }
    }

    class AbstractDemo
    {
    public static void main(String[] args)
    {
    System.out.println("Hello World!");
    }
    }

    二、抽象类实例

      1 /*
      2 雇员示例:
      3 需求:公司中程序员有姓名,工号,薪水,工作内容。
      4 项目经理除了有姓名,工号,薪水,还有奖金,工作内容。
      5 对给出需求进行数据建模。
      6 
      7 
      8 
      9 分析:
     10 在这个问题领域中,先找出涉及的对象。
     11 通过名词提炼法。
     12 程序员:
     13     属性:姓名,工号,薪水、
     14     行为:工作。
     15 经理:
     16     属性:姓名,工号,薪水,奖金。
     17     行为:工作。
     18 
     19 
     20 程序员和经理不存在着直接继承关系,
     21 
     22 但是程序员和经理却具有共性内容。
     23 可以进行抽取。因为他们都是公司的雇员 
     24 
     25 可以将程序员和经理进行抽取.建立体系.
     26     
     27 */
     28 
     29 //描述雇员。
     30 
     31 abstract class Employee
     32 {
     33     private String name;
     34     private String id;
     35     private double pay;
     36     Employee(String name,String id,double pay)
     37     {
     38         this.name = name;
     39         this.id = id;
     40         this.pay = pay;
     41     }
     42 
     43     public abstract void work();
     44     
     45 }
     46 
     47 
     48 //描述程序员。
     49 class Programmer extends Employee
     50 {
     51     Programmer(String name,String id,double pay)
     52     {
     53         super(name,id,pay);
     54     }
     55     public void work()
     56     {
     57         System.out.println("code...");
     58     }
     59 }
     60 
     61 //描述经理。 
     62 class Manager extends Employee
     63 {
     64     private int bonus;
     65     Manager(String name,String id,double pay,int bonus)
     66     {
     67         super(name,id,pay);
     68         this.bonus = bonus;
     69     }
     70     public void work()
     71     {
     72         System.out.println("manage");
     73     }
     74 }
     75 
     76 
     77 
     78 
     79 
     80 
     81 class  AbstractTest
     82 {
     83     public static void main(String[] args) 
     84     {
     85         System.out.println("Hello World!");
     86     }
     87 }
     88 
     89 
     90 class Person
     91 {
     92     private String name;
     93     private int age;
     94 
     95     Person(String name,int age)
     96     {
     97         this.name = name;
     98         this.age = age;
     99     }
    100     public String getName()
    101     {
    102         return name;
    103     }
    104     public void setName(String name)
    105     {
    106         this.name = name;
    107     }
    108 }
    109 class Student extends Person
    110 {
    111     Student(String name,int age)
    112     {
    113         super(name,age);
    114     }
    115 
    116 }
    117 class Worker extends Person
    118 {
    119     Worker(String name,int age)
    120     {
    121         super(name,age);
    122     }
    123 
    124 }
  • 相关阅读:
    CSS3—— 2D转换 3D转换 过渡 动画
    CSS3——边框 圆角 背景 渐变 文本效果
    CSS3——表单 计数器 网页布局 应用实例
    CSS3——提示工具 图片廓 图像透明 图像拼接技术 媒体类型 属性选择器
    CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
    CSS3——分组和嵌套 尺寸 display显示 position定位 overflow float浮动
    CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充
    Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
    数据库——单表查询
    数据库——添加,修改,删除
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/6922269.html
Copyright © 2011-2022 走看看