首页 > 编程语言 >JAVA中的三大特殊类:抽象类,接口类,内部类(JAVA基础)

JAVA中的三大特殊类:抽象类,接口类,内部类(JAVA基础)

时间:2024-06-22 22:00:54浏览次数:41  
标签:部类 JAVA 内部 静态 方法 接口 抽象类 接口类

抽象类

1.抽象类

包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必领定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用

2.抽象方法

使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现

3.五个重要的特点

1.有抽象方法的类只能定义成抽象类

2.抽象类不能实例化,即不能用new来实例化抽象类。

3.抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用

4.抽象类只能用来被继承

5.抽象方法必须被子类实现

接口类

1.定义

1.接口就是规范,定义的是一组规则,可以更加规范对子类的约束

2.接口和实现类不是父子关系,而是实现规则的关系

2.接口的6个要点

1.子类通过implements来实现接口中的规范

2.接口不能创建实例,但是可用于声明引用变量类型

3.一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的

4.接口可以多继承

5.JDK1.8(不含8)之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法

6.JDK1.8(含8)后,接口中包含普通的静态方法、默认方法

3.JDK1.8新特性

1.默认方法:默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法不是。作为替代方式,接口可以提供默认方法的实现,所有这个接口的实现类都会通过继承得到这个方法

2.静态方法:JAVA8以后,我们也可以在接口中直接定义静态方法的实现。这个静态方法直接从属于接口(接口也是类,一种特殊的类),可以通过接口名调用

内部类

1.要点

1.内部类是一类特殊的类,指的是定义在一个类的内部的类

2.内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰

3.本质:内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类

2.作用

1.内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问

2.内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员。但外部类不能访问内部类的内部属性

3.接口只是解决了多重继承的部分问题,而内部类使得多重继承的解决方案变得更加完整

3.分类

1.非静态内部类

1.非静态内部类对象必须寄存在一个外部类对象里。因此,如果有一个非静态内部类对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象

2.非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员

3.非静态内部类不能有静态方法、静态属性和静态初始化块

4.外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例

2.静态内部类

1.静态内部类看做外部类的一个静态成员

2.当一个静态内部类对象存在,并不一定存在对应的外部类对象。因此静态内部类的实例方法不能直接访问外部类的实例方法

3.匿名内部类

1.适合那种只需要使用一次的类。比如:键盘监听操作等等

2.匿名内部类没有访问修饰符

3.匿名内部类没有构造方法。因为它连名字都没有那又何来构造方法呢

4.局部内部类

1.定义在方法内部的,作用域只限于本方法,称为局部内部类

2.作用域仅限于所在方法。

标签:部类,JAVA,内部,静态,方法,接口,抽象类,接口类
From: https://blog.csdn.net/m0_63025333/article/details/139888078

相关文章

  • 简单整理一下近几年辅导的毕业设计项目Java+SSM+MySQL
    序号项目标题语言框架数据库代码论文PPT1jspm基于SSM的“昭愿”甜品店销售管理系统JavaSSMMySQL√√√2jspm基于SSM的医药管理系统JavaSSMMySQL√√√3jspm1x3v1基于JSP的校园宿舍电费缴纳系统JavaSSMMySQL√√√4jspm“众优”大学生家教平台的设计与实现JavaSSMMySQL√√√5......
  • 为什么JavaScript要书写优化?
    第一个原因:我们写代码是给机器看的,也是给程序员看的第二个原因:JS是弱类型语言,写得太随意编码风格就不好第三个原因:潜移默化提高程序性能那要怎么书写优化?要按强类型风格写代码varnum,str,obj;//没有指明类型varnumVal=0,strVal=......
  • Java课程设计:基于swing的飞翔的小鸟小游戏
    文章目录一、项目介绍二、核心代码三、项目展示四、源码获取一、项目介绍这个基于Swing框架的"飞翔的小鸟"课程设计项目是一个非常有趣且富有挑战性的Java编程练习,可以帮助学生学习图形用户界面编程和游戏开发的基础知识。该项目的主要目标是开发一个简单的游......
  • 【JavaScript脚本宇宙】革新前端样式:CSS-in-JS库大比拼与最佳实践
    解锁响应式设计的潜力:使用CSS-in-JS库构建动态样式前言随着前端技术的发展,CSS-in-JS(CSSinJavaScript)逐渐得到开发者的青睐。它通过将CSS样式定义在JavaScript中,利用JavaScript的强大特性,实现了更灵活、动态的样式管理方式。本文将介绍几个流行的CSS-in-JS库,包括styled-c......
  • 面试题-Java垃圾回收之垃圾收集器
    1.基础知识(1)知识点补充Stop-the-World:发生时,除了GC所用的线程之外,所有的线程都处于等待状态Safepoint:可达性分析算法时,必须保证在某个快照点进行。分析的过程中对象的引用关系不会发生变化!JVM的运行模式:Java-version就能看到Server模式:启动慢,但是进入稳定期......
  • 基于java的购物系统源码(文档+视频+源码)
    大家好,今天给大家演示一下由Javaswing实现的一款简单的购物程序,数据库采用的是mysql,该项目非常简单,实现了管理员对商品类型和商品的管理及用户注册登录后浏览商品、加入购物车、购买商品等功能,旨在学习Java图形界面开发,所以非常适合Java初学者和学生用来学习参考,下面我们来看......
  • 在windows下使用cmd命令行对java文件进行编译和执行
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。windows下利用cmd命令行可以调用jdk里的javac.exe和java.exe对java文件进......
  • Java 面试题:如何保证集合是线程安全的? ConcurrentHashMap 如何实现高效地线程安全?
    在多线程编程中,保证集合的线程安全是一个常见而又重要的问题。线程安全意味着多个线程可以同时访问集合而不会导致数据不一致或程序崩溃。在Java中,确保集合线程安全的方法有多种,包括使用同步包装类、锁机制以及并发集合类。最简单的方法是使用Collections.synchronized......
  • Android面试题:App性能优化之Java和Kotlin常见的数据结构
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点Java常见数据结构特点ArrayListArrayList底层是基于数组实现add、删除元素需要进行元素位移耗性能,但查找和修改块适合不需要频繁添加删除的链表LinkedList是双......
  • 学习面向对象前--Java基础练习题
    前言        写给所有一起努力学习Java的朋友们,敲代码本身其实是我们梳理逻辑的一个过程。我们在学习Java代码的过程中,除了需要学习Java的一些基本操作及使用,更重要的是我们需要培养好的逻辑思维。逻辑梳理好之后,我们编写代码实现需要的功能自然也就如鱼得水,因此本篇......