抽象类的概念:

1、Java中可以定义没有方法体的方法,还方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类;

2、如,shape类计算周长和面积的方法无法确定,那么就可以将这样的方法声明为抽象的,以便在具体的子类中实现

抽象类的特征:

抽象方法的声明

修饰符abstract 返回值类型 方法名([参数列表]);

注意:因为抽象方法无法确定具体执行的功能,所以抽象方法没有方法体,需要在小括号后加上分号

抽象类的声明

语法:修饰符 abstract class 类名 extends 父类名

抽象类和普通类除了使用abstract修饰外和普通的类相似;

抽象类中可以没有抽象方法;但是一旦某个有抽象方法,那么这个类必须被声明为抽象类

static final private不能和abstract共存

抽象类的使用:

因为抽象类不是一个具体的类,所以无法实例化,但是抽象类可以用于声明变量;

抽象类可以被继承,在子类中实现所有抽象类的所有抽象方法,以达到抽象类的具体化;

注意:因为抽象方法无法确定具体执行的功能,所有抽象方法没有方法体,需要在小括号后加上分号;

抽象方法:不允许包含方法体;子类中需要重写父类的抽象方法,否则,子类也是抽象类

格式:public abstract void eat();

接口:在Java中接口不仅仅是程序开发过程中“约定”,更是更加抽象化的抽象类

      无法归纳到一个类的但某些特征相同

   语法:修饰符 interface 接口名{[常量];[抽象方法];}

    接口中抽象方法可以不写abstract关键字,访问修饰符默认public

    当类实现接口时,需要去实现接口中的所有抽象方法,否则需要将该类设置为抽象类;

    接口中可以包含常量,默认public static final

   接口也可以实现继承,并且可以继承多个父接口

      default:默认方法 可以带方法体 jdk1.8后新增;可以在实现类中重写,并且可以通过接口的引用调用

   static:静态方法 可以带方法体 jdk1.8后新增;不可以在实现类中重写,可以通过接口名调用

接口实现的语法:修饰符 class类名 extends 父类名 implements 接口1,接口2,...{类体部分}

        一个类可以实现多个接口,从而解决了Java单继承的缺点

接口之间的继承:在Java中类之间的继承关系是单继承,也就是说一个类有且只能有一个父类

        而Java中的接口实现了多继承,也就是说一个接口可以有多个父接口

接口的作用:提高程序的重用性;提高程序的可扩展性;降低程序的耦合度;实现了多继承

内部类

什么是内部类? 在Java中,可以将类定义在另一个类里面或者一个方法里面,这样的类称为内部类

内部类分类:

成员内部类:将一个类定义在另一个类的成员位置;
  获取内部类对象实例,方式1:new外部类.new 内部类

            方式2:外部类对象.new 内部类

            方式3:外部类对象.获取方法

  1、内部类在外部使用时,无法直接实例化,需要借由外部类信息才能完成实例化;

  2、内部类的访问修饰符,可以任意,但是访问范围会受到影响;

  3、内部类可以直接访问外部类的成员;如果出现同名属性。优先访问内部类中定义的;

  4、可以使用外部类.this成员的方式,访问外部类中同名的信息;

  5、外部类访问内部类信息,需要通过内部类实例,无法直接访问;

  6、内部类编译后.class文件命名:外部类$内部类.class;

  7、内部类中是否可以包含与外部类相同方法签名的方法

局部内部类:将一个类定义在另一个类的方法体中或者代码块中;

  1、定义在方法内部,作用范围也在范围内

  2、和方法内部成员使用规则以用,class前面不可以添加public、private、protected、static

  3、类中不能包含静态成员

  4、类中可以包含final,abstract修饰的成员

  

静态内部类:将一个类定义在另一个类的成员位置,并且static修饰符;

  1、静态内部类中,只能直接访问外部类的静态成员,如果需要调用非静态成员,可以通过对象实例

  2、静态内部类对象实例时,可以不依赖于外部类对象

  3、可以通过外部类.内部类.静态成员的方式,访问内部类中的静态成员

  4、当内部类属性与外部类属性同名时,默认调用内部类中的成员;如果需要访问外部类中的静态属性,则可以通过外部类.属性的方式;如果需要访问外部类中的非静态属性,则可以通过new外部类().属性的方式

匿名内部类:匿名内部类没有名字

  1、匿名内部类没有类型名称、实例对象名称

  2、编译后的文件命名:外部类$数字.class

  3、无法使用private、public、protected、abstract、static修饰

  4、无法编写构造方法,可以添加构造代码块

  5、不能出现静态成员

  6、匿名内部类可以实现接口也可以继承父类,但是不能兼得

Java抽象类、接口、内部类的更多相关文章

  1. Java入门教程十(抽象类接口内部类匿名类)

    抽象类(abstract) 一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类. 在面向对象领域,抽象类 ...

  2. Java抽象类接口、内部类题库

    一.    选择题 1. Person类和Test类的代码如下所示,则代码中的错误语句是(  C  ).(选择一项)   public class Person { public String nam ...

  3. Java抽象类和内部类

    类(class) 类是相似对象中共同属性和方法的集合体 在面向对象中定义类,就是在描述事物,就是在定义属性(变量)和行为(方法).属性和行为共同成为类中的成员(成员变量和成员方法). 封装.继承和多态 ...

  4. java 抽象类&接口

    1,抽象类中有构造函数吗? 有,用于给子类对象进行初始化.   2,抽象关键字不可以和那些关键字共存? private 不行 static 不行 final 不行   final关键字: 1,fina ...

  5. java抽象类,接口(接口定义,实现接口,instanceof运算符,对象转换)

    抽象类 在面向对象的概念中,所有的对象都是通过类来表述的,但并不是所有的类都能够完整的描绘对象,如果一个类中没有包含足够的信息来描绘一类具体的对象,这样的类就是抽象类.抽象类往往用来表征对问题领域进行 ...

  6. java - day008 - 接口,内部类

    接口 作用: 结构设计工具,用来解耦合,需要有子类,隔离具体实现 接口是一个极端的抽象类 用 interface 代替 class 用 implements 代替 extends // 接口中所有东西 ...

  7. java 抽象类 接口 区别

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 接口 里面 都是抽象方法. 接口里面的 字段 都是 public static fina ...

  8. 【Java】对象、类(抽象类与内部类)、接口

    博文内容概况 对象和类 抽象类 接口 内部类 对象和类 对象是对客观事物的抽象,类是对对象的抽象.类是一种数据类型,其外观和行为由用户定义.类中可以设置两种类型的元素:字段(有时被称为数据成员)和方法 ...

  9. Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口

    目录 Java简介 Java语言基础组成 面向对象 对象 封装 构造函数 this关键字 static(静态关键字) 主函数 静态什么时候用呢? 面向对象(数组工具对象建立) 设计模式 继承 成员变量 ...

随机推荐

  1. 阿里云Centos操作Mysql

    1.  CentOS7 yum方式安装MySQL5.7 2.Centos下mysql导入sql 3.Centos设置远程 4.CentOS下mysql数据库常用命令总结 5.centos出现“Fire ...

  2. Kafka常用运维操作

    创建主题kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --replication-factor 3 --pa ...

  3. 我的Java秋招面经大合集

    阿里面经   阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推. 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer. 然后我也参加了 ...

  4. 重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源

    作者: OAM 项目负责人 导读:2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Op ...

  5. 【NOIP模拟赛】小奇的矩阵

    [题目背景] 小奇总是在数学课上思考奇怪的问题. [问题描述] 给定一个n*m的矩阵,矩阵中的每个元素aij为正整数. 接下来规定 1.合法的路径初始从矩阵左上角出发,每次只能向右或向下走,终点为右下 ...

  6. Comparable和Comparator 是什么以及区别

    一.Comparable和Comparator Comparable可以认为是一个内比较器,实现了Comparable接口的类,类的实例与实例直接可以比较,依赖compareTo方法的实现,compa ...

  7. winsock完成端口套接字重用注意事项

    刚申请到博客,第一篇随笔(๑•̀ㅂ•́)و✧ 关于DisconnectEx的一个问题,目前主要发现在windows10中出现了这个问题,winserver2008 win7都没有这个问题. 被Disc ...

  8. 新手也能看懂的 SpringBoot 异步编程指南

    本文已经收录自 springboot-guide : https://github.com/Snailclimb/springboot-guide (Spring Boot 核心知识点整理. 基于 S ...

  9. 抛弃Eclipse,投入IDEA 的独孤求败江湖

    "工欲善其事,必先利其器" 出处:孔子<论语> 两年了,这是我的 IDEA 实用技巧总结,从前我是一个 Eclipse 忠实用户,直到某天我用上了 IntelliJ I ...

  10. POJ 3295 Tautology(构造法)

    题目网址:http://poj.org/problem?id=3295 题目: Tautology Time Limit: 1000MS   Memory Limit: 65536K Total Su ...