JAVA基础知识总结(二)

本文详细介绍了Java面向对象的基本概念,包括面向对象分析(OOA)、面向对象测试(OOT)、面向对象编程(OOP)等核心术语。同时深入探讨了类与对象的关系、成员变量与局部变量的区别,并对匿名对象的应用场景进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、面向对象

java中OOA,OOT,OOP,OOD,OOSM,OOM表示的含义是什么?
OOA(Object Oriented Analysis):面向对象分析
OOT (Object Oriented Testing): 面向对象测试
OOP(Object Oriented Programming):面象对象编程
OOD(Object Oriented Design):面向对象设计
OOSM(Object Oriented Software Maintenance):面向对象软件维护
OOM(Object Oriented Method):面向对象方法


1、面向对象思想(OOP):

概述:面向对象是相对面向过程而言的,面向过程强调的是功能,面向对象强调将功能封装进对象,强度具备功能的对象;
特征
  封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式
  继承:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
  多态:一个对象在程序不同运行时刻代表的多种状态,父类或者接口的引用指向子类对象。


2、类和对象:

:对现实世界中某类事物的描述,是抽象的,概念上的定义。
对象:事物具体存在的个体。


3、成员变量和局部变量的区别(重点):

成员变量局部变量
作用域针对整个类有效只在某个范围内有效(一般指的就是方法,语句体内)
存储位置随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中在方法被调用,或者语句被执行的时候存在,存储在栈内存中,当方法调用完,或语句结束后,自动释放
初始值有默认初始值没有默认初始值,使用前必须赋值

4、匿名对象:

匿名对象就是没有名字的对象,是对象的一种简写方式。
应用场景:
   A:只调用一次类中的方法
   B:可以作为实际参数在方法传递中使用


5、不同修饰符可以修饰哪些内容:

当前类同一包内子孙类(不同包)其他包
publicOKOKOKOK
protectedOKOKOK
defaultOKOK
privateOK

6、Object类:

  1. 是所有类的根类,超类。
    java中提供的类以及我们自定义的类都直接或间接的继承自Object类

  2. Object类中的方法
         A:void finalize()
        当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法
         B:Class getClass()
         获取对象的字节码文件的描述类,后面再讲反射的时候还会在说这个类
         String name = s.getClass().getName();
         C:int hashCode()
         获取对象的哈希值。其实就是对象的内存地址值十进制表示
         D:String toString()
         返回对象的字符串表示。
         E:boolean equals(Object obj)
         用于比较两个对象的地址值是否相同

  3. == 和equals的用法:
         A: ==怎么用?
         可用于比较基本数据类型,比较的就是基本数据类型的值是否相等
         可用于比较引用数据类型,比较的是对象的地址值是否相等
         B: equals怎么用?
         equals只能用于比较引用数据类型
         Object提供的equals是用于比较对象地址值是否相同


7、抽象类(abstract):

  1. 概念:
    多个类有相同的声明,但是方法体不一样。这个时候,我们考虑把方法声明进行抽取。让子类继承后,自己去实现方法体。没有方法体的方法,我们需要用抽象标志下。
  2. 特点:
    (1)抽象类和抽象方法都要用abstract进行修饰
    (2)抽象类不能被实例化
    (3)抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
  3. 抽象类中数据特点:
    (1)成员变量:抽象类中可以有变量,也可以有常量
    (2)成员方法:抽象类中可以有抽象方法,也可以有非抽象方法
    (3)构造方法:抽象类是一个类,它有构造方法,本身不能被实例化,但可以给子类实例化使用
  4. 抽象类中的问题:
    (1)抽象关键字abstract不可以和哪些关键字共存?
     private:私有内容子类继承不到,所以不能重写。但是abstract修饰的方法要求被重写
     final:final修饰的方法不能被重写,但是abstract修饰的方法要求被重写
     static:假如一个抽象方法能通过static修饰,这个方法可以直接通过类名调用,而抽象方法是没有实体的,这样的调用无意义。所以不能用static修饰

8、关键字:

  1. super
    super()意为调用父类中不带参数的构造方法
    super(name)意为调用父类中带参数的构造方法
    super必须放在子类构造器的第一行

  2. this:
    代表本类对象的一个引用,谁调用this所在的方法,this就代表谁
    使用场景:a.用于区分同名成员变量和局部变量
         b.在定义函数时,该函数内部要用到调用该函数的对象时,因为此事对象还没建立,故this代表此对象
         c.构造函数时调用,this(参数)必须作为第一条语句存在

  3. final:
    最终的意思,修饰类、方法、变量
    final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量是一个常量,只能被赋值一次
    内部类只能访问被final修饰的局部变量

  4. static:
    静态的意思,修饰成员变量和成员函数
    静态的特点:a.随着类的加载而加载
          b.优先于对象存在
          c.对所有对象共享
          d.可以被类名直接调用
    静态的注意事项:a.静态方法只能访问静态成员(因为静态的内容是随着类的加载而加载,它是先进内存的)
            b.静态方法中不能使用this,super关键字
            c.主方法是静态的public static void main(String[] args)
                public:公共的意思,是最大权限修饰符
                static:由于jvm调用main方法的时候,没有创建对象,只能通过类名调用。
                void:由于mian方法是被jvm调用,不需要返回值,用void修饰
                main:主要的意思,所以jvm采用了这个名字,是程序的入口
                String[]:字符串数组
                args:数组名


9、静态变量和成员变量的区别:

  1. 调用方式
    静态变量也称为类变量,可以直接通过类名调用。
    也可以通过对象名调用。这个变量属于类。
    成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。
  2. 存储位置
    静态变量存储在方法区长中的静态区。
    成员变量存储在堆内存。
  3. 生命周期
    静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。
    成员变量随着对象的创建而存在,随着对象的消失而消失。
  4. 与对象的相关性
    静态变量是所有对象共享的数据。
    成员变量是每个对象所特有的数据。
  5. 静态的优点和弊端:
    优点:
    对对象的共享数据进行单独空间的存储,节省内存,没有必要每个对象都存储一份
    可直接被类名调用
    弊端:
    生命周期过长,随着类的消失而消失
    访问出现权限,即静态虽好但只能访问静态
  6. 什么使用使用静态呢
    A:当所有对象共享某个数据的时候,就把这个成员变量定义为静态修饰的。
    B:当某个方法没有访问该类中的非静态成员,就可以把这个方法定义为静态修饰。
    静态的生命周期比较长,所以一般不推荐使用。
  7. 静态代码块
    A:它只执行一次,它比main还先执行。
    B:执行顺序
    静态代码块–构造代码块–构造方法
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值