抽象类

abstract:抽象的 , 可以修饰类和方法
可以定义抽象方法的类,就是抽象类
格式:abstract class 类名 {public abstract 返回值类型 方法名();}
抽象方法:只有方法的声明部分,没有方法的实现部分说明:对于父类中定义的非私有的方法,子类有不同的实现的时候,在父类类型中不需要对方法进行实现,只需要声明出     来,将来子类继承之后,重写父类中的方法,不同的子类有不同的实现。

抽象类的特点

1.抽象方法所在的类,一定是抽象类;但是抽象类中未必就有抽象方法,可以有非抽象方法。
2.抽象类不能创建对象,但是可以声明引用(是有构造方法的),抽象类的对象其实是存在的,只是不能通过new关键字手动创建对象,而是在创建子类对象的时候,由jvm自动调用抽象类的构造方法创建对象。
3.一个类是否有构造方法,不取决于该类是否能够创建对象,而是取决于该类是否有成员变量,如果可以定义成员变量,就要初始化成员变量,构造方法就是对成员变量进行赋值的。
4.一个类继承了抽象类后,子类可以全部重写父类的抽象方法,这时候子类就是一个普通类,也可以不全部重写,那么子类也是一个抽象类。
案例、图形面积和周长的计算
public class Demo2 {}
//图形类(抽象类)
abstract class Shape{public abstract double area() ;//计算面积的方法的实现 是根据不同的图形(是图形类的子类对象) 有不同的实现//计算周长的方法的声明,没有具体的实现public abstract double girth() ;//抽象类中可以有非抽象方法   public void name(){System.out.pringtln("我是一个图形类");}
}//圆形类
class Circle extends Shape{//属性private double r;public Circle() {super();}public Circle(double r) {super();this.r = r;}public double getR() {return r;}public void setR(double r) {this.r = r;}
//方法全部重写 @Overridepublic double area() {return Math.PI*r*r;}@Overridepublic double girth() {return Math.PI*2*r;} }//长方形类,方法没有全部重写,所以还是抽象类
abstract class Rect extends Shape{private double width;private double length;public Rect() {super();}public Rect(double width, double length) {super();this.width = width;this.length = length;}public double getWidth() {return width;}public void setWidth(double width) {this.width = width;}public double getLength() {return length;}public void setLength(double length) {this.length = length;}
//方法没有全部重写 @Overridepublic double area() {return length*width;}//周长方法没有重写public abstract double girth() ;
}案例2
package com.ujiuye.demos;public class Demo_7 {//  抽象类中的成员特点public static void main(String[] args) {Woman w1 = new Woman("黑寡妇");System.out.println(w1.getName());}
}abstract class Human {//  抽象类中没有抽象变量,可以定义变量和常量private String  name = "人类";//变量final int AGE = 200;//常量
//  抽象类中定义上空参构造public Human() {}
//  有参构造public Human(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}class Woman extends Human {public Woman() {    }public Woman(String name) {//  子类可以调用抽象父类中的构造方法,完成对成员变量的赋值super(name);}
}

Java基础---认识抽象类相关推荐

  1. 初学Java基础学习——抽象类和接口的区别

    初学Java基础学习--抽象类和接口的区别 一.关键字 1)抽象类的关键字 abstract class A{//定义一个抽象类: } class Test extends A{//子类使用exten ...

  2. java基础之抽象类和接口

    一.抽象: **抽象类(abstract class):**使用了abstract关键字所修饰的类叫做抽象类.抽象类无法实例化,也就是说,不能new出来一个抽象类的对象(实例). **抽象方法(abs ...

  3. Java基础之抽象类

    /* 1.抽象类的概述: 动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的. 我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该类必须是抽象类. 抽象类的特点:A: ...

  4. 3、java基础:抽象类与接口的区别

    抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样 ...

  5. java基础-类-抽象类-接口(自学笔记)

    一.类 class 定义:具有相同属性(特性)和方法(行为)的一类事物 的抽象的总称 例如:人类,动物,车,屌丝类.是一种类别,世界上所有的事物都可以分类,在计算机中java都能进行对应和体现 类的三 ...

  6. Java基础概念 | 抽象类与接口

    抽象类与接口 定义 用法 定义 抽象类:包含抽象方法的类. 包含抽象方法的类必须通过abstract关键字声明为抽象类,否则编译器会报错. 抽象方法需要通过abstract关键字进行声明. 抽象类可以 ...

  7. Java基础篇------抽象类详解

  8. 第一阶段>>>Java基础进阶 OOP/Reflect/注解/IO流/API核心

    目录 >>>java基础01-结构以及类型 >>>java基础02-初识数组 >>>java基础03-面向对象OOP >>>ja ...

  9. 菜鸟学习笔记:Java基础篇5(抽象类与接口、回调函数、内部类)

    菜鸟学习笔记:Java面向对象篇下 抽象类 接口 回调函数 内部类 成员内部类 匿名内部类 抽象类 通过前面知识的学习,抽象类这个概念应该不难理解,但比较容易和后面要说的接口混淆,而且在面试中也比较爱 ...

最新文章

  1. 39条常见的Linux系统简单面试题
  2. linux c++ 警告 warning: ISO C++ forbids converting a string constant to ‘char*‘ [-Wwrite-strings] 解决方法
  3. 台哥原创:java 扫雷源码
  4. Spring Security——获取当前已登录用户UserDetails对象
  5. 博士论文:教你如何给女朋友送礼物
  6. JAVA类定义,成员类,抽象类及接口类
  7. 简易计算机系统综合设计设计报告(VHDL)
  8. 编程必会的100个代码大全,建议收藏
  9. MyBatis使用Map
  10. 计算机开机最快,电脑开机速度,最快几秒?
  11. LeetCode-初级算法-有效的数独 ( java )
  12. 【依葫芦画瓢】SSM-CRUD --- 2
  13. 正常卸载Microsoft Office后无法重新安装?
  14. 查看docker里应用的版本
  15. 如何在阿里云提交工单
  16. 浅谈df和du的区别
  17. Zookeeper启动失败,提示:Starting zookeeper ... already running as process
  18. 计算机大三了只会python可以去名企实习吗?如何找python实习
  19. 鸿蒙开源kernel学习记录(一)
  20. 语种切换_多语种跳转研究试运行全程直播:莫使金樽空对月

热门文章

  1. python模块import具体用法
  2. Hibernate异常之关键字错误
  3. salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)...
  4. NSOperation队列实实现多线程
  5. 复数类--重载运算符3+
  6. 用AutoML找到更小、更快、更好的模型,谷歌开源Model Search
  7. 硬核知识,C/C++移植法则分享
  8. linux逻辑分区被删除了怎么办,找到了linux分区顺序错乱修复方法
  9. 深度学习在计算机视觉点云中的发展与未来
  10. 如何搭建一套完整的深度学习系统?