当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    Java中抽象类用法与注意点实例详解

    栏目:win服务器问题汇总 时间:2019-11-30 16:04

    本文实例讲述了Java中抽象类用法与注意点。分享给大家供大家参考,具体如下:

    一 抽象类的用法案例

    1 代码

    abstract class Person    //定义一抽象类Person
    {
      String name;
      int age;
      String occupation;
      public abstract String talk(); // 声明一抽象方法talk()
    }
    class Student extends Person  // Student类继承自Person类
    {
      public Student( String name, int age, String occupation ) {
        this.name = name;
        this.age = age;
        this.occupation = occupation;
      }
      @Override
      public String talk()  // 实现talk()方法
      {
        return "学生——>姓名:" + name + ",年龄:" + age + ",职业:" + occupation;
      }
    }
    class Worker extends Person  // Worker类继承自Person类
    {
      public Worker( String name, int age, String occupation ) {
        this.name = name;
        this.age = age;
        this.occupation = occupation;
      }
      public String talk()   // 覆写talk()方法
      {
        return "工人——>姓名:" + name + ",年龄:" + age + ",职业:" + occupation;
      }
    }
    public class AbstractClassDemo {
      public static void main( String[] args ) {
        Student s = new Student("张三", 20, "学生"); //创建Student类对象s
        Worker w = new Worker("李四", 30, "工人");  //创建Worker类对象w
        Person s1 = new Student("王五", 20, "学生"); //通过向上转换的方法创建Student类对象s
        Person w1 = new Worker("马六", 30, "工人");  //通过向上转换的方法创建Worker类对象w
        System.out.println(s.talk());     //调用被实现的方法
        System.out.println(w.talk());
        System.out.println(s1.talk());
        System.out.println(w1.talk());
      }
    }
    
    

    2 运行

    学生——>姓名:张三,年龄:20,职业:学生
    工人——>姓名:李四,年龄:30,职业:工人
    学生——>姓名:王五,年龄:20,职业:学生
    工人——>姓名:马六,年龄:30,职业:工人

    3 说明

    本案例通过对父类引用和自身引用来实现创建一个对象。

    二 抽象类中构造方法的定义使用

    1 代码

    abstract class Person {
      String name;
      int age;
      String occupation;
      public Person( String name, int age, String occupation ) {
        this.name = name;
        this.age = age;
        this.occupation = occupation;
      }
      public abstract String talk();
    }
    class Student extends Person {
      public Student( String name, int age, String occupation ) {  // 在这里必须明确调用抽象类中的构造方法
        super(name, age, occupation);
      }
      public String talk() {
        return "学生——>姓名:" + name + ",年龄:" + age + ",职业:" + occupation;
      }
    }
    public class AbstractConstructor {
      public static void main( String[] args ) {
        Student s = new Student("张三", 18, "学生");//第1种方式创建对象s
        Person s1 = new Student("李四", 18, "学生");//第2种方式创建对象s1
        System.out.println(s.talk());
        System.out.println(s1.talk());
      }
    }
    
    

    2 运行

    学生——>姓名:张三,年龄:18,职业:学生
    学生——>姓名:李四,年龄:18,职业:学生

    3 说明