首页 > 编程语言 >JAVA面向对象

JAVA面向对象

时间:2022-12-24 14:00:10浏览次数:35  
标签:JAVA 继承 子类 接口 面向对象 父类 方法

JAVA面向对象

  • 面向对象编程(OOP,Object-Oriented Programming)
  • 以类的方式组织代码,以对象的形式封装数据

三大特性

  • 封装
  • 继承
  • 多态

类与对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物
  • 对象是抽象概念的具体实例

创建与初始化对象

  • 使用new关键字创建对象: 除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用

  • 构造器: 也称为构造方法,是在进行创建对象的时候必须调用的

    • 和类名相同;没有返回值
    • 使用new关键字,本质是在调用构造器;初始化对象的值
    • 一旦定义了有参构造,无参就必须显示定义

*IDEA快捷键: alt + insert 快速生成

*栈中生成对象引用变量名,堆中生成实例?

封装

  • 程序设计要求"高内聚,低耦合"。高内聚就是类的内部数据操作细节自己完成,不允许玩不干涉;低耦合: 仅暴露少量的方法给外部使用
  • 封装: 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏
  • 提高程序安全性,保护数据;隐藏代码实现细节;统一接口;提升系统可维护性

*private 私有修饰符

继承

  • 继承本质是对某一批类的抽象,从而实现对现实世界更好的建模

  • JAVA中类只有单继承,没有多继承

  • 关键词: extends 意思是扩展,子类是对父类的扩展

  • 继承是类与类的一种关系;此外,类与类之间的关系还有依赖、组合、聚合等


  • Object类: JAVA中所有的类都默认直接或间接继承Object类
  • super:
    • 调用父类的方法或属性(私有的方法或属性无法被继承)
    • 子类无参构造默认调用父类的无参构造且先调用
  • 方法重写:
    • 需要有继承关系,子类重写父类方法;方法名相同,参数列表相同
    • 重写与静态方法无关
    • 只能使用public关键词
    • 修饰符: 范围可以扩大,不能缩小: public>prodected>default>private
    • 抛出的异常: 范围可以缩小,不能扩大

*IDEA快捷键: CTRL + H 展示当前类继承结构

*final修饰的类不能被继承

多态

  • 即同一方法可以根据发送对象的不同而采用多种不同的行为方式
  • 一个对象的实际类型是确定的,可以指向的引用类型就不确定了
//父类的引用指向子类
Object p1 = new Person();
  • 父类可以指向子类,但是不能调用子类独有的方法
  • 多态是方法的多态
  • 多态存在条件:
    • 有继承关系
    • 子类重写父类方法
    • 父类引用指向子类对象
  • instanceof

//匿名代码块;每次新增对象时执行
{
    
}
//静态代码块;只执行一次
static{
    
}
//静态代码块执行 先于 匿名代码块 先于 构造方法

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

//静态导入包,可以直接调用random()方法(random().sout)
import static java.lang.Math.random;

抽象类

  • abstract修饰符;可以用来修饰类和方法

  • 不能new抽象类

  • 抽象方法只有方法名字,没有方法的实现;抽象方法只能靠子类去实现它

  • 抽象方法必须在抽象类中;抽象类中可以写普通方法

接口

  • 对比:

    • 普通类: 只有具体实现
    • 抽象类: 具体实现和规范(抽象方法)都有
    • 接口: 只有规范;多继承
  • 接口就是规范,定义的是一组规则

  • 接口的本质是契约,制定好后大家都遵守

  • interface关键词定义接口;implements关键词实现接口

  • 接口中的所有定义的方法都是抽象的 public abstract;所有定义的属性都是常量 public static final

  • 实现了接口的类,需要重写接口中的方法

  • 接口不能被实例化;接口中没有构造方法

内部类

  • 内部类就是在一个类的内部定义另一个类
  1. 成员内部类
  2. 静态内部类: static
  3. 局部内部类: 在方法中
  4. 匿名内部类
//例;不用将实例保存到变量中
new Apple().eat();

*一个JAVA类中可以有多个class类,但只能有一个public class类

标签:JAVA,继承,子类,接口,面向对象,父类,方法
From: https://www.cnblogs.com/Learn1ng/p/17002822.html

相关文章

  • JavaScript:类(class)
    在JS中,类是后来才出的概念,早期创造对象的方式是newFunction()调用构造函数创建函数对象;而现在,可以使用newclassName()构造方法来创建类对象了;所以在很多方面,类的使用方......
  • 初识java
    配置完环境之后,让我们来写出第一个Java程序吧!Hello,world!创建一个后缀名为.java的文件,并使用下载好的文本编辑器打开创建一个Java基本类publicclassHello{//基本......
  • 初识Java创建Java运行环境
    三高:高可用、高性能、高并发Java的特性java是一门从C语言/C++作为参考,所改编出的一款全新的计算机语言,其原始名称为:C++--但因一些原因后改名为Javajava是一款面向对象......
  • 4.面向对象编程(上)
    学习面向对象内容的三条主线Java类及类的成员面向对象的三大特征其它关键字一、面向过程与面向对象面向过程(POP)与面向对象(OOP)面向过程,强调的是功能行为,以函数为最小......
  • 5.面向对象编程(中)
    一、面向对象特征之二:继承性(inheritance)为什么要有继承?多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类......
  • 第一百一十七篇: JavaScript 工厂模式和原型模式
    好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.工厂模式工厂模式是另外一种关注对象创建概念的创建模式。它的领域中同其它模式的不同......
  • 【FAQ】HarmonyOS 从API8开始不再支持java作为开发语言,从开发角度看该如何选择
    【关于Java版本】Java版本SDK后续将不会继续演进,最高版本为API7。使用API7及以前的JavaSDK开发的应用可以兼容后续新的HarmonyOS版本。【未来新增功能】HarmonyOS新增功能会......
  • 【FAQ】HarmonyOS 从API8开始不再支持java作为开发语言,从开发角度看该如何选择
    【关于Java版本】Java版本SDK后续将不会继续演进,最高版本为API7。使用API7及以前的JavaSDK开发的应用可以兼容后续新的HarmonyOS版本。 【未来新增功能】HarmonyOS新......
  • 硬核万字长文,深入理解 Java 字节码指令(建议收藏)
    Java字节码指令是JVM体系中非常难啃的一块硬骨头,我估计有些读者会有这样的疑惑,“Java字节码难学吗?我能不能学会啊?”讲良心话,不是我谦虚,一开始学Java字节码和Java......
  • 史上最全!熬夜整理56个JavaScript高级的手写知识点!!专业扫盲!
    本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。前言大家好,我是林三心,基础是进阶的前提,前面我给大家分享了本菜鸟这一年来笔记中的50个JS基础知识点和50个JS高......