Java个人学习之旅(第六天)

面向对象(上):

概念:

  • 类: 是一类事物的概念(抽象,没有具体化)

  • 对象: 类的具体化。

  1. 万物皆对象

  2. 程序是对象的集合,他们通过发送消息来告知彼此所要做的

  3. 每个对象都有自己的由其他对象所构成的存储

  4. 每个对象都拥有其类型

  5. 某一特定类型的所有对象都可以接收同样的消息

类似类的继承,接口的实现,子类和子接口都可以接收父类和父接口能接收的消息

1. 变量:

变量又称属性

声明方式:

权限修饰符(可加可不加) 数据类型 变量名 = 变量值;

变量分为成员变量和局部变量

区别:

成员变量:

  • 可以直接定义在类的{}内
  • 作用域为整个类
  • 需要实例化对象才可以调用
  • 各种类型的变量如果不赋值,都以默认值初始化
  • 加载到堆空间

局部变量:

  • 声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
  • 作用域只在声明区域内
  • 直接通过类名就可以调用
  • 一定要赋初值
  • 加载到栈空间

在这里插入图片描述

2. 方法:

方法的声明:

权限修饰符  返回值类型  方法名(形参列表){

			方法体
			
 }
  1. 权限修饰符: public protected friendly private,区别后面会讲

  2. 方法名:首字母小写,驼峰命名,要做到见名知意

  3. 返回值就是一个方法结束后会生成的值

    返回值类型:

    • void:空返回值,无需返回任何值
    • 其他类型的值:格式 return 值
  4. 形参列表
    可以声明一到多个参数
    格式: 形参类型 形参名1,形参类型 形参名2,.......

    如果遇到形参很多时,可以使用不定项参数的方式
    格式:

    public void method(int...args);
    

    这时参数被看成是一个数组,可以通过数组下标调用值

  5. 方法体:

    方法功能的体现。

Java中参数的传递:
Java中只有值传递(面试中笔试常见题目)

  • 基本数据类型:传递的值是传变量的值的副本给形参,与变量本身无关,在原方法体中变量不受影响
  • 引用类型:传这个对象地址的值,把地址的值copy给实参,别的方法中的操作会影响该对象
  • 实参:就是调用方法时传递的值,比如 add(3,4); 3和4是实参
  • 形参:是方法中定义的参数,比如 public int add(int a,int b){} 这里的a和b是形参 基本类型传递

注意: String虽然也是引用类型,但是参数的传递规律遵循基本数据类型的参数传递

3. 封装性

思想:

  • 我们程序设计追求“高内聚,低耦合”。 高内聚 :类的内部数据操作细节自己完成,不允许外部干涉; 低耦合 :仅对外暴露少量的方法用于使用。

  • 隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。
    通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

四种权限修饰符:

  1. public
  2. protected
  3. default(什么都不写)
  4. private

具体的修饰范围:
在这里插入图片描述
4种权限都可以用来修饰类的内部结构:属性、方法、构造器、内部类
修饰类的话,只能使用:缺省、public

4. 构造器:

格式:

public 类名(参数类型 参数名1,参数类型 参数名2,....){
	方法体
}

作用:

  1. 创建对象
  2. 初始化对象的信息

说明:

  1. 如果一个类没有定义构造器,则系统默认提供一个空参的构造器
  2. 定义构造器的格式:权限修饰符 类名(形参列表){}
  3. 一个类中定义的多个构造器,彼此构成重载
  4. 一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器
  5. 一个类中,至少会有一个构造器。

5. 关键字

  1. this
    this可以调用属性,方法

    this理解为:当前对象 或 当前正在创建的对象

    使用方式:

    this.属性名
    this.方法名
    

    注意:this只能在本类的非静态方法中使用

  2. package

    • 包,为了更好的实现项目中类的管理
    • 声明在源文件的首行
    • 包,属于标识符,遵循标识符的命名规则、规范
    • 每个包都会以"."分隔。

声明方式(在文件首行):

package xxx.yyy.zzz

表示xxx包下的yyy包下的zzz包中的文件

  1. import

import的使用:

  • 在源文件中显式的使用import结构导入指定包下的类、接口
  • 声明在包的声明和类的声明之间
  • 如果需要导入多个结构,则并列写出即可
  • 可以使用"xxx.*"的方式,表示可以导入xxx包下的所结构
  • 如果使用的类或接口是java.lang包下定义的,则可以省略import结构
  • 如果使用的类或接口是本包下定义的,则可以省略import结构
  • 如果在源文件中,使用了不同包下的同名的类,则必须至少一个类需要以全类名的方式显示。
  • 使用"xxx.*"方式表明可以调用xxx包下的所结构。但是如果使用的是xxx子包下的结构,则仍需要显式导入
  • import static:导入指定类或接口中的静态结构:属性或方法。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值