Java 基础:面向对象

目录:
一、 面向对象和面向过程
二、 类和对象的关系
三、 成员变量和局部变量
四、 引用类型的兼容性
五、 单一职责原则
六、 代码块
七、 类的访问控制权限
八、 Packaging Classes


一、 面向对象和面向过程

1. 概述
  • 什么是面向对象?:关注现实存在的事物的各方面的信息,从对象的角度出发,根据事物的特征进行程序设计
  • 面向过程,是遇到一件事时,思考 我该怎么做 ,然后一步步实现的过程
  • 面向对象,是遇到一件事时,思考 我该让谁来做 ,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了

  • 总结

    • 面向过程:自己该怎么做
    • 面向对象:找人帮我们做
  • 对象:用来描述客观事物的一个实体

  • :具有 相同属性和方法 的一组对象的集合

    • 是一个模子,用以确定对象将会拥有的特征和
    • 这里的特征和行为可以称之为属性和方法
  • 属性:就是对象所具有的各种静态特征,通俗理解为对象有什么特点

  • 方法:就是对象具有的各种动态行为,通俗理解为对象能做什么

  • 总结类是对象的类型、对象是类的实例化表现

2. 面向对象的一般步骤:
  • 先按照名词提炼问题领域中的对象
  • 对象 进行描述,其实就是在明确对象中应该具备的属性和行为
  • 通过 new 的方式,创建该事物的具体对象(对象实例化)
  • 通过该对象调用它以后的功能
    面向对象
  • 创建对象的内存图:
    创建对象

二、 类和对象的关系

1. 概述
  • ,用于描述多个对象的共同特征,它是对象的模板
  • 对象,用于描述现实中的个体,它是类的实例
  • 比如:可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系
2. 对象的内存图:
对象的内存图

三、 成员变量和局部变量

1. 变量的作用域 {}:
  • 一对大括号,就是一个作用域
  • 同一作用域中,不能出现同名变量
2. 成员变量和局部变量的区别
  • 定义的位置不同
    • 定义在类中的变量是成员变量
    • 定义在方法中或者{}语句里面的变量是局部变量
  • 在内存中的位置不同
    • 成员变量存储在堆内存的对象中
    • 局部变量存储在栈内存的方法中
  • 声明周期不同
    • 成员变量随着对象的出现而出现中,随着对象的消失而从堆中消失
    • 局部变量随着方法的运行而出现中,随着方法的弹栈而消失
  • 初始化不同
    • 成员变量因为在堆内存中,所以有默认的初始化值,还可以用构造方法初始化
    • 局部变量没有默认的初始化值,必须手动的给其赋值才可以使用,不赋值不能使用
      成员属性的初始值
3. 对象数组:存储对象
  • 数组中可以存储基本数据类型的变量,同时我们的数组中还可以存储对象
public class Demo {
    public static void main(String[] args) {
        //这个数组就是一个用来存储Obj类型的对象的数组
        Obj[] b = new Obj[2]; //声明一个存储对象的数组

        b[0] = new Obj();
        b[1] = new Obj();

        b[0].show();
    }
}

class Obj {
    public void show() {
        System.out.println("show");
    }
}

  • 对象数组内存图:
    对象数组
4. 方法参数
  • 对于基本类型形式参数改变不会影响到实际参数
  • 对于引用类型形式参数改变会影响到实际参数
  • 方法参数内存图:
    方法参数

四、 引用类型的兼容性

赋值兼容性规则:
  • 对引用类型的变量进行赋值操作时,赋值号 右边 的表达式的类型必须与赋值号 左边 的对象引用类型 相同或是其子类型 (陪同赋值赋值类型兼容)
  • 方法的** return **语句返回的结果的类型,必须与方法声明中的返回类型 相同 或是其子类型 (返回值的类型兼容)
  • null 值与所有的引用类型兼容,所有引用类型的变量都可被赋值为 null

五、 单一职责原则

  • 也叫:单一功能原则
  • 定义:一个类有且只有一个引起功能变化的原因,即一个类有且只有一个功能
    • 如果在一个类中,承载的功能越多,交融和耦合性会越高,被复用的可能性越低;
    • 同时,因为耦合性较高,当类中其中一个职责发生变化时,有可能引发同类中其他职责的变化,进而影响整个程序的运行。

六、 代码块

1. 概述
  • 在Java中,使用 {} 括起来的代码被称为代码块
  • 根据其 位置和声明 的不同,可以分为局部代码块构造代码块静态代码块同步代码块(多线程讲解)。
2. 局部代码块
  • 局部代码块是定义在 方法或语句中,方法和类都是以代码块的方式划定边界的
  • 优点:在方法中出现,限定变量生命周期,及早释放,提高内存利用率
  • 缺点:会使得代码可读性很差,实际开发中不会用
3. 构造代码块
  • 定义在类中 成员位置,方法之外 的代码块
  • 特点:
    • 优先于 构造方法执行,构造代码块用于执行 所有对象 均需要的初始化动作
    • 每创建一个对象均会执行一次构造代码块
4. 静态代码块
  • 静态代码块是定义在成员位置,方法之外,使用 static 修饰的代码块。
  • 特点
    • 优先于 主方法执行、优先于 构造代码块执行,在 类加载时 执行。
    • 该类不管创建多少对象,静态代码块 只执行一次
    • 可用于给 静态变量 赋值,用来给类进行初始化。

七、 类的访问控制权限

1. 概述
  • 通过访问控制修饰符 (access modifiers)可以限制 成员 在类或对象外部的可见性
  • 对于类而言,只有两种权限修饰符:
    • public
    • 不写,默认
2. 公有的: public
  • 访问限定范围最大,可以在 任何位置 被访问
  • 只要能正确加载 public 成员所在的类型,就可以通过类型访问 public 成员。
3. 私有的: private
  • 访问限定范围最小,只允许在 本类中 进行访问
4. 受保护的: protected
  • 只允许 当前类同包任意类跨包子类 可以访问
5. 默认 (不加任何访问修饰符)
  • 只允许 当前类同包任意类 可以访问

注意:如果类用 public 修饰,则 类名必须与文件名相同。一个文件中 只能有一个 public 修饰的类。

6. 访问权限图:
访问权限

八、 Packaging Classes

1. 类的完全限定名(全类名)
  • 类的完全限定名(全类名):在类名前面加上类所属的包名,中间用句点“.”分隔,称为类的完全限定名(Full Qualified Name),简称类的限定名
2. 我们如何唯一确定操作系统上的文件呢?
  • 通过文件在操作系统上的 绝对路径,来唯一的确定一个文件
3. java 类比于 操作系统唯一确定一个文件的方式,如何唯一确定java中的一个类呢?
  • 通过一个类的所属包的包名 + 类名 唯一确定 java 中的一个类
    ImportDemo: 简单类名 --> 全类名 com.cskaoyan.packages.ImportDemo;
4. 当在类体中使用了与当前类不同包的类名时,编译器编译时因为无法找到该类的定义而失败,有两个解决办法:
  • 使用不同包类的完全限定名
  • 使用 import 声明,为编译器提供该类的定义信息 (简单来讲,就是,将其他包的类型导入到当期的Java文件)
5. import 关键字
  • import 声明一般紧跟在 package 声明之后,必须在类声明之前,其基本语法如下:
    import <类的完全限定名>;
  • Java语言核心包 java.lang 包中的类将被隐式导入,可以直接使用其中的类
  • import <包名>.*; 含义就是在当前java文件中,导入某个包下的 所有类(没有嵌套导入的功能)
6. package
  • 在Java源程序文件的第一行使用 package 声明: 可以使文件中定义的类成为指定包的成员(java类是由包组织起来的)
    • package声明的语法如下:
      package <包名>; 常规的命名的方式,域名反转的形式
  • 包名通常由多个名字字符串构成,中间用句点“.”分隔,每个名字表示的包称为其前面的名字表示的包的子包,
    • 通常以组织机构的域名反转形式作为其所有包的通用前缀,如

com.cskaoyan.packages
com.cskaoyan.packages 称之为 com.cskaoyan子包

7. 包的用途:
  • 将相关的类和接口分组,包名通常表示包中各个类和接口的 用途 (分类组织java代码,方便管理我们的代码)
  • 包创建了不同的 命名空间(Namespace),从而有效地解决了 类型命名 冲突问题
  • 包提供了对应用程序内部实现机制的保护域 default 权限修饰符 protected 权限修饰符
  • 如果有一个java文件,没有写 package 关键字,这些类都被认为,属于java中的默认包的成员
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352

推荐阅读更多精彩内容

  • 面向对象笔记 一、 对象在内存中的存放方法以及被调用过程 class文件首先被加载到方法区中的class文件内容区...
    VictorBXv阅读 462评论 0 2
  • 1. 面向对象思想 1.1 面向对象思想引入 前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装...
    JackChen1024阅读 334评论 0 0
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,175评论 1 44
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,745评论 2 9
  • 打卡第12周 终于结束一本烧脑的书《未来简史》,未更公众号,未去健身房 因为放三天假,带婆婆去吃自助餐,去批发市场...
    初七是婶儿阅读 174评论 0 0