2017.9.9学习小结 - 抽象类与接口1

回顾

八、习题

学习小结

一、抽象类

Java中可以创建一种类专门来做父类,这种类就是抽象类。

1.抽象类的基本概念

抽象方法是只声明而为实现的方法,且必须使用abstract关键字声明,包含抽象方法的类也必须用abstract class声明。

抽象类定义规则:

(1) 抽象类和抽象方法都必须用abstract关键字来修饰;

(2) 抽象类不能直接实例化,即不能直接通过new来产生对象;

(3) 抽象类定义时抽象方法只需声明,而不需要实现;

(4) 含抽象方法的类必须被声明为抽象类,抽象类的子类必须覆写所有的抽象方法后才能被实例化,否则此子类还是抽象类。

语法:

abstract class 类名称{
  声明数据成员;
  访问权限 返回值的数据类型 方法名称(参数···){
    // 定义一般方法
  }
  abstract 返回值的数据类型 方法名称(参数···); // 定义抽象方法里没有定义方法体
}

例如:

abstract class Book {
  private String title = "Java开发"; // 属性
  public void print() { // 普通方法,有“{}”表示方法体
    System.out.println(title);
  }
  public abstract void fun(); // 没有方法体,是一个抽象方法
}

抽象类使用原则:
抽象类必须有子类,子类使用extends继承,一个子类只能继承一个抽象类;
子类(若不是抽象类)则必须覆写抽象类之中的全部抽象方法;
如果要想实例化抽象类的对象,则可以使用子类进行对象的向上转型来完成。

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2017年9月9日 下午11:44:07
 * @Description TODO 抽象类的使用
 */
public class P323_13_1 {
    public static void main(String[] args) {
        Student11 s = new Student11("张三", 20, "学生"); // 创建Student类对象s
        Worker w = new Worker("李四", 30, "工人"); // 创建Worker类对象w
        System.out.println(s.talk()); // 调用被覆写的方法
        System.out.println(w.talk());
    }
}

abstract class Person22 { // 定义一个抽象类Person
    String name;
    int age;
    String occupation;

    public abstract String talk(); // 声明一个抽象方法talk()
}

class Student11 extends Person22 { // Student类继承自Person类
    public Student11(String name, int age, String occupation) {
        this.name = name;
        this.age = age;
        this.occupation = occupation;
    }

    public String talk() { // 覆写抽象方法talk()
        return "学生--》姓名:" + this.name + ",年龄:" + this.age + ",职业:" + this.occupation + "!";
    }
}

class Worker extends Person22 { // Worker类继承自Person类
    public Worker(String name, int age, String occupation) {
        this.name = name;
        this.age = age;
        this.occupation = occupation;
    }

    public String talk() { // 覆写抽象方法talk()
        return "工人--》姓名:" + this.name + ",年龄:" + this.age + ",职业:" + this.occupation + "!";
    }
}

运行结果:

运行结果1

图示:


思考

终于学到抽象类啦。


记于2017年9月10日夜

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,242评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,834评论 18 399
  • 一、抽象类 1、抽象类含义的概括: 当多个类出现相同功能时,但功能主体不同,这样可以向上抽取,抽取时只抽取功能定义...
    玉圣阅读 855评论 0 6
  • 你很清楚的知道什么时候用抽象类,什么时候用接口么?p.s. 多文字预警! 1 抽象类和接口简介 1.1 抽象类 ...
    Sharember阅读 2,389评论 9 55
  • 突然就想给自己二战建了文集,每天写写有趣的事情,或者就当个树洞说说心里话。小伙伴们临走前和我说二战要克服的不只是知...
    简单小医阅读 236评论 2 0