Javase笔记------05

  • 面向对象编程1
     -1. 技能点列表
     在这里插入图片描述在这里插入图片描述 -2. 总体概述
     在这里插入图片描述
  • 面向对象和面向过程的异同

在这里插入图片描述

  • 面向对象的思想特点
      A:是一种更符合我们思考习惯的思想
      B:把复杂的事情简单化
      C:让我们从执行者变成了指挥者
      举例:
       如何造汽车(事物比较复杂, 使用简单的线性思维无法解决)
        面向过程:
        1. 造车轮?
        2. 造发动机?
        3. 造车皮?
        4. 挡风玻璃? …
       很难决定上面这些步骤之间的关系! 先造发动机还是先造车轮?
       面向对象:
       车轮
        1.买橡胶
          1)到马来西亚
          2)找到橡胶厂
          3)掏钱买
          4)用船将橡胶运到国内
        2.造磨具
        3.将橡胶放入磨具
        4.出车轮
       发动机
        ….
       车壳
        ….
       座椅
        …
       挡风玻璃
        ….
       将上面的造出的东东, 组装, 汽车造出!

  • 对象和类的概念
     对象:是具体的事物 xiaoming xiaohong
     类:是对对象的抽象(抽象 抽出象的部分)Person
     先有具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。
     生活案例
      1.类是一个图纸 对象是根据该图纸制造多个实物。
      2.类是一个模具 对象是使用模具制造的多个铸件(月饼模子 )。
      3.类是上海大众汽车,对象就是大家购买的一辆辆具体上海大众汽车。
  • 认识类和对象
      1. 需求: 使用面向对象思想表示人的日常生活
      2.
       (1)分析
        1)由多个具体的人(小红、 小张、 老李) 抽象出所有的公共特征
        2)静态特征: 姓名、 年龄、 性别
        3)动态行为: 吃饭、 休息、 自我介绍
       (2)实现
        1)创建抽象的人-----Person类
        2)创建具体的人-----对象
     
      3. 对象和类的关系
        1)特殊到一般, 具体到抽象。
        2)类可以看成一类对象的模板, 对象可以看成该类的一个具体实例。
        3)类是用于描述同一类形的对象的一个抽象的概念, 类中定义了这一类对象所应具有的静态和动态属性。
        4)JDK提供了很多类供编程人员使用, 编程人员也可定义自己的类。

  •  (1)定义类(类的组成)
      1)属性 field
      2)方法 method
      3)构造方法 construtor
      4)其他: 代码块 静态代码块 内部类
     (2)创建对象
      1)类名 对象名 = new 类名();
      2)Person p1=new Person();
      3)调用类的属性和方法
      4)对象名.成员变量
      5)对象名.成员方法
  • 类的属性
     1. 属性 field, 或者叫成员变量,属性用于定义该类或该类对象包含的数据或者说静态属性。
     2. 属性作用范围是整个类体。
     3. 属性定义格式:
       [修饰符] 属性类型 属性名 = [默认值]
     4. 在定义成员变量时可以对其初始化,如果不对其初始化, Java使用默认的值对其初始化。
     在这里插入图片描述
  • 局部变量和成员变量的区别
      (1)在类中的位置不同
        成员变量:类中方法外。
        局部变量:方法定义中或者方法声明上。
      (2)在内存中的位置不同
        成员变量:在堆中。
        局部变量:在栈中。
      (3)生命周期不同
        成员变量:随着对象的创建而存在,随着对象的消失而消失。
        局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
      (4)初始化值不同
        成员变量:有默认值。
        局部变量:没有默认值,必须定义,赋值,然后才能使用。
  • 引用类型
       Java 语言中除基本类型之外的变量类型都称之为引用类型。
       在这里插入图片描述Java中的对象和数组是通过引用对其操作的。
     1. 引用可以理解为一种受限的指针
     2. 指针是可以进行与整数做加减运算的, 两个指针之间也可以进行大小比较运算和相减运算。 引用不行, 只能进行赋值运算。
     3. 引用就是一个变量或对象的别名(引用的本质是一个对象) ; 指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间)。
  • 内存分析
     1. 栈:
      1)存放: 局部变量
      2)先进后出, 自下而上存储
      3)方法执行完毕, 自动释放空间
     2. 堆:
      1)存放new出来的对象
      2)需要垃圾回收器来回收
     3. 方法区:
      1)存放: 类的信息(代码)、 static变量、 字符串常量等.
    在这里插入图片描述
  • 构造器
     1. 构造器定义: constructor 构造方法
       一个在创建对象时被自动调用的特殊方法。
     2. 构造器作用:
        为对象进行初始化(成员变量) 工作。
     3. 构造器是一种特殊的方法:
       1)构造器的方法名必须和类名一致!
       2)构造器虽然有返回值, 但是不能定义返回类型(返回值的类型肯定是本类), 不能在构造器里调用return。
       3)通过new关键字调用! !
       4)如果我们没有定义构造器, 则系统会自动定义一个无参的构造方法。 如果已定义则编译器不会添加无参数构造方法!
       5)与普通方法一样, 构造方法也可以重载。
  • 方法调用
     1. 形参和实参
      1)定义方法的参数是形式参数。
      2)调用方法的参数是实在参数。
      3)调用方法时要求参数个数相同, 类型兼容。
     2.参数传递
      1)基本数据类型的参数传递。
      2)无法通过方法调用改变变量的值。
      3)引用数据类型的参数传递。
      4)可以通过方法调用改变变量的值。
  • this关键字
     1. this的作用:
      1)this表示的是当前对象本身,
      2)更准确地说, this代表当前对象的一个引用。
     2. 普通方法中使用this。
      1)区分类成员属性和方法的形参.
      2)调用当前对象的其他方法(可以省略)
      3)位置: 任意
     3. 构造方法中使用this。
      1)使用this来调用其它构造方法
      2)位置: 必须是第一条语句
     4. this不能用于static方法。
  • static 关键字
     1. 在类中, 用static声明的成员变量为静态成员变量 ,或者叫做: 类属性, 类变量.
      1)它为该类的公用变量, 属于类, 被该类的所有实例共享, 在类被载入时被显式初始化,
      2)对于该类的所有对象来说, static成员变量只有一份。 被该类的所有对象共享! !
      3)可以使用” 对象.类属性” 来调用。 不过, 一般都是用“类名.类属性”
      4)static变量置于方法区中!
     2. 用static声明的方法为静态方法
      1)不需要对象, 就可以调用(类名.方法名)
      2)在调用该方法时, 不会将对象的引用传递给它, 所以在static方法中不可访问非static的成员。
      3)静态方法不能以任何方式引用this和super关键字。
  • 代码块
     (1)用{} 括起来的代码。
     (2)分类:
      A:局部代码块
        用于限定变量的生命周期,及早释放,提高内存利用率。
      B:构造代码块
        把多个构造方法中相同的代码可以放到这里, 每个构造方法执行前,首先执行构造代码块。
      C:静态代码块
        对类的数据进行初始化,仅仅只执行一次。
     (3)静态代码块 ,构造代码块 ,构造方法的顺序问题 ?
        静态代码块 > 构造代码块 > 构造方法。
  • pakage
     1. 为什么需要package?
      1)为了解决类之间的重名问题。
      2)为了便于管理类: 合适的类位于合适的包!
     2. package怎么用?
      1)通常是类的第一句非注释性语句。
      2)包名: 域名倒着写即可, 再加上模块名, 并与内部管理类。
     3. 注意事项:
      1)写项目时都要加包, 不要使用默认包。
      2)com.gao和com.gao.car, 这两个包没有包含关系, 是两个完全独立的包。 只是逻辑上看起来后者是前者的一部分。
  • JDK中的主要包
     1. java.lang
      包含一些Java语言的核心类, 如String、 Math、 Integer、 System和Thread, 提供常用功能。
     2. java.awt
      包含了构成抽象窗口工具集(abstract window toolkits) 的多个类, 这些类被用来构建和管理应用程序的图形用户界面(GUI)。
     3. java.net
      包含执行与网络相关的操作的类。
     4. java.io
      包含能提供多种输入/输出功能的类。
     5. java.util
      包含一些实用工具类, 如定义系统特性、 使用与日期日历相关的函数。
  • Import
     1. 为什么需要import?
      如果不适用import, 我们如果用到其他包的类时, 只能这么写: java.util.Date, 代码量太大, 不利于编写和维护。 通过import可以导入其他包下面的类, 从而可以在本类中直接通过类名来调用。
     2. import怎么使用?
      1)import java.util.Date;
      2import java.util.*; //导入该包下所有的类。 会降低编译速度, 但不会降低运行速度。
     3. 注意要点:
      1)java会默认导入java.lang包下所有的类, 因此这些类我们可以直接使用。
      2)如果导入两个同名的类, 只能用包名+类名来显示调用相关类:
      3)ava.util.Date date = new java.util.Date();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值