面向对象基础

1.1面向过程与面向对象的区别

面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计。但二者并不是对立的,在解决复杂问题时,通过面向对象的方式把握事物之间复杂的关系,方便分析整个系统;具体到微观时,仍然使用面向过程设计。

以开车为例,面向过程中思考

  1. 有一辆车
  2. 驾驶员上车
  3. 挂挡踩离合
  4. 车开动

而面向对象中思考

  1. 有车、驾驶员这两个个对象
  2. 车拥有挂挡离合这几个方法(还拥有属性,如性能外观)
  3. 人拥有挂挡踩离合这几个方法(同样拥有属性)

1.2 对象与类

对象是具体的事物,而类是对对象的抽象,如小明小红是对象,而人则是对小明小红的抽象,即类。

生活案例:上海大众汽车是类,你购买的其中的一辆即对象。

对象的三个特征:

  1. 对象的行为(即方法)
  2. 对象的状态(即属性)
  3. 对象标识

类之间的三种关系:

  1. 依赖(uses-a)
  2. 聚合(has-a)
  3. 继承(is-a)

1.3 定义与使用类

类的组成:属性(field),方法(method),构造方法(construtor),其他如代码块,内部类;

类的属性(成员变量):用于定义该类所含数据或静态属性

1.定义格式:【修饰符】 属性类型 属性名 = 默认值

(如不初始化则使用默认值)

2.局部变量和成员变量

3.引用类型

Java中的对象和数组即通过引用对其操作的

a)   可以理解为受限的指针

b)   但引用不能进行运算,只能赋值

c)    引用的本质是对象,指针的本质是地址

类的方法:

  1. 定义格式:

[修饰符] 返回类型 方法名(参数){代码块}

  1. 方法调用:对象.成员方法

形参和实参

参数传递:(Java中都是按值传递)

3.构造器

  1. 定义:constructor 构造方法 创建对象时被调用
  2. 作用:为成员变量初始化
  3. 特点:

a)   方法名与类名一致

b)   不能定义返回类型

c)    通过new调用

d)   如果没有定义构造器,系统则有默认的无参数构造方法

e)   可重载

  1. this关键字

this表示当前对象本身的一个引用

使用this:

a)   普通方法中:区分类的成员属性和形参

b)   构造方法中:来调用其他构造方法

必须位于第一条语句

c)    Static 不能使用

Static关键字

  1. 同static声明的成员变量为静态成员变量

a)   公用变量,被类的所有实例使用

b)   Static成员变量只有一份,被共享

c)    通过类.类属性调用

  1. 用static声明的方法为静态成员变量

a)   不需要对象即可调用方法

b)   在调用该方法时,不会传递引用对象,即static方法不可访问非static变量

c)    不可以使用this,super关键字

静态初始化块

Java学习 · 初识 面向对象基础一的更多相关文章

  1. Java学习 · 初识 面向对象基础二

    Package 为什么需要使用package a)   解决类重名的问题 b)   便于管理类 怎么使用package a)   类的第一句非注释性语句 b)   命名:域名倒着写,再加上模块名 注意 ...

  2. Java学习 · 初识 面向对象深入一

    面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公 ...

  3. Java学习 · 初识 面向对象深入二

    面向对象深入 1.            抽象类 a)     声明 i.           抽象方法和抽象类必须用abstract来修饰 ii.           没有方法体,不需要实现 b)  ...

  4. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  5. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  6. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  7. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  8. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

  9. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

随机推荐

  1. 在Mac终端中使用vim编辑文件步骤

    VIM (Unix及类Unix系统文本编辑器) Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是纯粹的自由软件. http://jingya ...

  2. Kindeditor图片上传Controller

    asp.net MVC Kindeditor 图片.文件上传所用的Controller [HttpPost, AllowAnonymous] public ActionResult UploadIma ...

  3. HTML5学习总结——相关练习与项目

    一.小米商城项目 第一天示例代码: <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  4. C51 单片机的中断号以及中断向量

    1.外部中断0. 1:分别由引脚/INT0./INT1的电平信号引起. 2.定时/计数器0.1:分别由T0. T1的溢出引起. 3.串行口发送.接收:发送完一个字节或接收到一个字节引起. 上述共5个中 ...

  5. 如何在运行jar指定使用的JDK

    写一个.bat文件 例如在同文件夹下,新建一个run.bat文件 run.bat 的内容是如下: set JAVA_HOME=C:\jdk1.7.0_67set CLASSPATH=.;%JAVA_H ...

  6. MyBatis之Mapper XML 文件详解(二)-sql和入参

    sql 这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中.它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化. 比如: <sql id="use ...

  7. ZooKeeper分布式

    1:zk的相关特性 1.一致性:数据一致性,数据按顺序分批入库. 2.原子性:事务要么都成功,要么都失败,不会局部化. 3.单一视图:客户端连接集群中的任一zk节点,数据都是一致的. 4.可靠性:每次 ...

  8. 闲谈Hybrid

    前言 当经常需要更换样式,产品迭代,那么我们应该考虑hybrid混合开发,上层使用Html&Css&JS做业务开发,底层透明化.上层多多样化,这种场景非常有利于前端介入,非常适合业务快 ...

  9. LeetCode 简单 -旋转字符串(796)

    给定两个字符串, A 和 B. A 的旋转操作就是将 A 最左边的字符移动到最右边. 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' .如果在若干次旋转操作之后,A 能变成B ...

  10. 生产环境MySQL数据库集群MHA上线实施方案

    生产环境MySQL数据库集群MHA上线实施方案 一.不停库操作 1.在所有节点安装MHAnode所需的perl模块(需要有安装epel源) yum install perl-DBD-MySQL -y ...