Java可以创建一种类专门用来当做父类,这种类称为“抽象类”。

“抽象类”的作用类似“模板”,其目的是要设计者依据它的格式来修改并创建新的类。但是不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再由它来创建对象。

抽象类的定义及使用规则:

<1>包含一个抽象方法的类必须是抽象类

<2>抽象类和抽象方法都要使用abstract关键字声明

<3>抽象方法只需声明而不需要实现

<4>抽象类必须被子继承、子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法

抽象类不能使用final关键字声明,因为使用final关键字声明的类不能被子类所继承

抽象方法不要使用private声明,因为使用private声明了就不能被子类覆写

一个抽象类中可以定义构造方法

//=================================================

// File Name :abstract_demo

//------------------------------------------------------------------------------

// Author :Common

// 类名:A

// 属性:

// 方法:

abstract class A{

public static final String FLAG = "CHINA";

private String name = "张三";

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public abstract void print();//定义一个抽象方法

}

//类名:B

//属性:

//方法:

class B extends A{//继承抽象类,覆写全部的抽象方法

public void print(){

System.out.println("FLAG="+FLAG);

System.out.println("姓名="+super.getName());

}

}

//主类

//Function : abstract_demo

public class abstract_demo {

public static void main(String[] args) {

// TODO 自动生成的方法存根

B b = new B();

b.print();

}

}

假设人分为学生和工人,学生和工人可以说话,但是学生和工人说话的内容不一样,使用抽象类实现这样一个场景

//=================================================

// File Name :ploy_up_demo

//------------------------------------------------------------------------------

// Author :Common

// 类名:People

// 属性:

// 方法:

abstract class People{

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public People(String name, int age) {//构造函数

this.name = name;

this.age = age;

}

public void say(){

System.out.println(this.getContent());

}

public abstract String getContent();//get方法,说话的内容由子类决定

}

//类名:Student

//属性:

//方法:

class Student extends People{

private float score;

public Student(String name, int age,float score) {

super(name, age);//调用父类的构造方法

// TODO 自动生成的构造函数存根

this.score = score;

}

@Override

public String getContent() {//覆写父类中的get抽象方法

// TODO 自动生成的方法存根

return "学生信息-->姓名:"+super.getName()+"年龄:"+super.getAge()+"成绩:"+this.score;

}

}

//类名:Worker

//属性:

//方法:

class Worker extends People{

private float salary;

public Worker(String name, int age,float salary) {

super(name, age);//调用父类的构造方法

// TODO 自动生成的构造函数存根

this.salary = salary;

}

@Override

public String getContent() {//覆写父类中的get抽象方法

// TODO 自动生成的方法存根

return "工人信息-->姓名:"+super.getName()+"年龄:"+super.getAge()+"薪水:"+this.salary;

}

}

public class abstract_demo2 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Student stu = new Student("张三",18,99.0f);

Worker wor = new Worker("张三",18,1000.0f);

stu.say();

wor.say();

}

}

java抽象类创建_Java抽象类相关推荐

  1. java抽象类列子_Java 抽象类,求个范例

    展开全部 抽象类与接口紧密相关,32313133353236313431303231363533e4b893e5b19e31333262373337它们不能实例化,并且常常部分实现或根本不实现.抽象类 ...

  2. java 抽象类 方法_java 抽象类

    Java为什么使用抽象类和接口 Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现.OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是 ...

  3. java抽象类变量_Java抽象类

    一.解释: Java的普通类是一个完善的功能类,可以直接实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容.而抽象类是指在普通类的结构里面增加抽象方法的组成部分 ...

  4. java抽象类关键字_Java 抽象类 abstract关键字

    抽象类前使用abstract关键字修饰,则该类为抽象类 抽象的方法是不完全的,它只是一个方法签名而完全没有方法体 抽象的方法没有花括号 继承抽象类的子类必须覆盖父类的抽象函数(即:子类继承抽象类以后, ...

  5. java定义两个动物抽象类 程序_java抽象类和接口详解

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...

  6. java抽象类构造方法_Java 抽象类中构造方法的作用?如何理解?

    java抽象类的构造方法和普通类的构造方法一样 都是用来初始化类 只是抽象类的构造方法不能直接调用 因为抽象类不能实现实例 但是一旦一个普通类继承了抽象类 便也可以在构造函数中调用其抽象类的构造函数 ...

  7. java抽象类例子_java抽象类经典实例分享

    在这之前有给大家详细的介绍过java抽象类,相信很多人应该都比较了解了,那么下面就要继续来给大家分享一个java抽象类的实例. 题目: 不同几何图形的面积计算公式是不一样的,可是,它们具有的特性是一样 ...

  8. java 抽象类 模板_Java抽象类的构造模板模式用法示例

    搜索热词 本文实例讲述了Java抽象类的构造模板模式用法.分享给大家供大家参考,具体如下: 一 点睛 模板模式的一些简单规则. 抽象父类可以只定义需要使用的某些方法,而不能实现的部分抽象成抽象方法,留 ...

  9. java抽象方法声明_java抽象类和抽象方法

    一.什么是抽象类和抽象方法 没有具体功能的实现,通过子类继承后重写方法来实现一定约束的类称之为抽象类,抽象类必须被abstract修饰.抽象方法就是只有方法声明,没有方法体的方法.抽象类的使用一般通过 ...

最新文章

  1. TCPDF中文生僻字解决方案
  2. 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存在影响
  3. 算法题+JVM+自定义View,隔壁都馋哭了
  4. python operator __gt___Python operator.gt方法代码示例
  5. Python3 Ocr 初探
  6. php排序order,#ThinkPHP#视图下order排序
  7. 经典算法详解(2)寻找数组中的次大数
  8. java高级工程师 考试_JAVA高级工程师笔试题及答案
  9. 计算机考研高等代数,福大考研经验贴:我的数学考研之路(数学分析和高等代数)...
  10. 如何在子控件上使用WS_EX_LAYERED
  11. 在线检测本机ip的网站
  12. 27 信息过滤与反垃圾
  13. 如何练就超强的学习能力?这才是最好的答案
  14. MATLAB实现k-means算法(k-均值)对无标签数据进行聚类,并通过肘部法则确定聚类类别
  15. 企业使用云平台,存在的三个问题
  16. python学习之-- 协程
  17. 7-6 程序员买西瓜 (5分)
  18. 如何实现扫描二维码自动跳转到网页
  19. 【2023电赛备赛】使用sysconfig对ccs进行图形化编程
  20. Web前端_项目实践02_ins北欧风多肉植本店主网页(纯HTML+CSS静态页面)

热门文章

  1. SecureCRT 服务器链接信息密码忘记找回
  2. 使用 Drools 规则引擎实现业务逻辑
  3. JQuery对DOM的操作【三】
  4. 大企业喜欢使用外包人员驻场开发软件的原因解析
  5. Smart Communications在手机支付中赢得菲律宾人心
  6. python爬虫分析大学排名_Python爬虫之爬取中国大学排名(BeautifulSoup库)
  7. Ping网关间歇性丢包,Ping同局域网电脑正常
  8. 【Git】每天1分钟系列——Git本地与远程服务器介绍
  9. 线性代数-行列式知识总结
  10. iOS小技能: OCR 之身份证识别 (正反面) 【 应用场景:物流类型app进行实名认证】