Java学习 · 初识 面向对象基础一
面向对象基础
1.1面向过程与面向对象的区别
面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计。但二者并不是对立的,在解决复杂问题时,通过面向对象的方式把握事物之间复杂的关系,方便分析整个系统;具体到微观时,仍然使用面向过程设计。
以开车为例,面向过程中思考
- 有一辆车
- 驾驶员上车
- 挂挡踩离合
- 车开动
而面向对象中思考
- 有车、驾驶员这两个个对象
- 车拥有挂挡离合这几个方法(还拥有属性,如性能外观)
- 人拥有挂挡踩离合这几个方法(同样拥有属性)
1.2 对象与类
对象是具体的事物,而类是对对象的抽象,如小明小红是对象,而人则是对小明小红的抽象,即类。
生活案例:上海大众汽车是类,你购买的其中的一辆即对象。
对象的三个特征:
- 对象的行为(即方法)
- 对象的状态(即属性)
- 对象标识
类之间的三种关系:
- 依赖(uses-a)
- 聚合(has-a)
- 继承(is-a)
1.3 定义与使用类
类的组成:属性(field),方法(method),构造方法(construtor),其他如代码块,内部类;
类的属性(成员变量):用于定义该类所含数据或静态属性
1.定义格式:【修饰符】 属性类型 属性名 = 默认值
(如不初始化则使用默认值)
2.局部变量和成员变量

3.引用类型

Java中的对象和数组即通过引用对其操作的
a) 可以理解为受限的指针
b) 但引用不能进行运算,只能赋值
c) 引用的本质是对象,指针的本质是地址
类的方法:
- 定义格式:
[修饰符] 返回类型 方法名(参数){代码块}
- 方法调用:对象.成员方法
形参和实参
参数传递:(Java中都是按值传递)

3.构造器:
- 定义:constructor 构造方法 创建对象时被调用
- 作用:为成员变量初始化
- 特点:
a) 方法名与类名一致
b) 不能定义返回类型
c) 通过new调用
d) 如果没有定义构造器,系统则有默认的无参数构造方法
e) 可重载
- this关键字
this表示当前对象本身的一个引用
使用this:
a) 普通方法中:区分类的成员属性和形参
b) 构造方法中:来调用其他构造方法
必须位于第一条语句
c) Static 不能使用

Static关键字
- 同static声明的成员变量为静态成员变量
a) 公用变量,被类的所有实例使用
b) Static成员变量只有一份,被共享
c) 通过类.类属性调用
- 用static声明的方法为静态成员变量
a) 不需要对象即可调用方法
b) 在调用该方法时,不会传递引用对象,即static方法不可访问非static变量
c) 不可以使用this,super关键字
静态初始化块

Java学习 · 初识 面向对象基础一的更多相关文章
- Java学习 · 初识 面向对象基础二
Package 为什么需要使用package a) 解决类重名的问题 b) 便于管理类 怎么使用package a) 类的第一句非注释性语句 b) 命名:域名倒着写,再加上模块名 注意 ...
- Java学习 · 初识 面向对象深入一
面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公 ...
- Java学习 · 初识 面向对象深入二
面向对象深入 1. 抽象类 a) 声明 i. 抽象方法和抽象类必须用abstract来修饰 ii. 没有方法体,不需要实现 b) ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
随机推荐
- 一个有意思的CSS样式库--BUTTONS
我最近发现了一个有意思的CSS样式库,和Bootstrap相似,但是它是专门的一个高度可定制的,免费的并且开源的按钮CSS样式库,这里附上它的网址:http://www.bootcss.com/p/b ...
- one or more listeners failed to start问题解决思路
今日搭建一个web应用的时候总是遇到tomcat报错:one or more listeners failed to start. Full detail balabale....而且还没有其他提示, ...
- http://imgbase64.duoshitong.com/ 图片转换 base64
base64图片工具介绍: 1.支持 PNG.GIF.JPG.BMP.ICO 格式. 2.将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页.编辑器中. 这对于一 ...
- Mysql存储引擎myisam与inndb的区别?
最近在研究Mysql存储引擎这块,说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法,在此做一个大概总结: 其实在工作中用的最多也就是MYISAM和INNODB,IN ...
- 写shell脚本需要注意哪些地方----零基础必看
shell脚本是完全靠自学的,每一步需要注意的问题都是我自己亲自实践出来的,对于大神可能看来是小儿科,但是对于新手,是必须注意的 一.首先执行 echo $SHELL查看本机的解释器, 二.开始写脚本 ...
- Vue路由钩子 afterEach beforeEach区别
vue-router作为vue里面最基础的服务,学习一段时间,对遇到的需求进行一些总结 使用vue-cli作为开发前提 vue-router已经配置好了 路由写法 routes: [ { path ...
- Linux入门——SSH免密登录
SSH免密登录 1.简介 SSH是一种网络协议,用于计算机之间的加密登录. 本文针对的实现是OpenSSH,它是自由软件,应用非常广泛. 2.初始化公钥私钥 有rsa,dsa两种加密方式,生成的公钥私 ...
- telnet 批处理
**** 需要确认多台服务器端口是否打开,如果一个一个telnet会非常麻烦,通过百度,写了两个BAT,基本能做工作需要. ***start.bat start "" " ...
- 03以太网帧结构(链路层 IEEE802.3)
OSI七层模型:从底往上记(研究细致时用) 物理层:单位bit,字节byte,同轴电缆,光纤,二进制,比特流 数据链路层:帧,16进制,0-9,A-FMac地址->全网唯一性 mac地址 ...
- 【8086汇编-Day7】关于多个段的程序的实验
实验一 实验二 实验三 实验四 实验五 实验六 总结 在集成环境下,内存从0770段开始按照段的先后顺序和内容多少分配,并且分配的都是16的倍数 关于实际占用的空间公式的话其实极容易想到(假设有N个字 ...