Java入门 面向对象第一天
面向对象
人为抽象的一种编程模型,在理解面向对象的代码时要按照抽象的模型来理解,不能只从代码字面来理解复杂的问题,学会拆分成一个一个独立的小问题,通过解决每一个小问题,最后解决一个大问题
类
类是事物,算法,逻辑,概念等的抽象,用来封装这类型相关的数据和方法代码,封装成独立组件,可以把类理解成模板,或者图纸.在创建类对象时就相当于按着这个模板来创建
对象
从类创建来的具体实例,每个实例占用独立的内存空间,保存各自的属性数据,实例可以单独控制,让实例去执行指定方法中的代码.
引用
保存一个实例对象的内存地址用引用变量,将地址值赋值给变量,用变量去调用一个实例,可以理解成遥控,只需要用引用去操作就行了.
这里以一个例子来了解:
项目:day0101_士兵
类:day0101.Test1类和Solder类
Solder类代码:
package day0101; import java.util.Random; /* * 封装 * 相关数据,逻辑运算方法, * 封装成一个"类"组件 */ public class Solder { //成员变量 int id; //默认值0 int blood = 100; //成员方法 public void go() { System.out.println(this.id+"号士兵前进"); } public void attack() { if (blood == 0) { System.out.println( "这是"+id+"号士兵的尸体"); return;//方法到此结束 } System.out.println(id+"号士兵进攻"); //模拟受到伤害,血量减少 //产生一个随机减血量 int d = new Random().nextInt(10); blood -= d;//血量减少 if (blood < 0) {//如果血量变成负数,重置成0 blood = 0; } System.out.println("血量: "+blood); if (blood == 0) { System.out.println(id+"号士兵阵亡"); } } }
Test1类代码:
package day0101; public class Test1 { public static void main(String[] args) { //新建 Soldier 实例 //再把它的内存地址值,保存到 s1 变量 /* s1 = { * id: 0, * blood: 100 * } */ Solder s1 = new Solder(); /* s2 = { * id: 0, * blood: 100 * } */ Solder s2 = new Solder(); //用s1变量找到士兵的内存空间,访问它的id变量 s1.id = 9527; s2.id = 9528; //用s1变量找到士兵的内存空间,让它去执行go()方法代码 s1.go(); s2.go(); s2.attack(); s1.attack();
} }
构造方法
新建实例时,执行的一种特殊方法 new Solder()
Java的类中必须有构造方法,如果自己不定义构造方法,编译器会添加默认的空构造方法
class Solder{
public Solder(){ }
}
上面的代码是自己添加的一个空构造方法,当你不添加是,编译器也是自动生成空构造方法,什么也不做
构造方法的作用
创建一个实例之后,立即执行的一个特殊方法,构造方法中的代码可以任意编写,完成任意功能或执行任意运算,构造方法一般的作用是给成员变量赋值.成员变量是定义在类中的变量.
this用法
this.id
id是成员变量,当用构造函数给成员变量赋值时:
public class A{
int id;
public A(int id){
this.id=id;
}
}
this.id表示的是成员变量id.
this(a,b)
a,b是括号中的参数,this(a,b)表示调用参数为两个构造方法
public class A{
int id;
int a;
public A(int id){
this(id,5)
}
public A(int id,int a){
this.id=id;
this.a=a ;
}
}
this()要在代码的首行.
Java入门 面向对象第一天的更多相关文章
- Java基础-面向对象第一特性之封装(Encapsulation)
Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...
- JAVA入门 面向对象
主要内容 1.类和对象的概念 2.什么是面向对象 3.什么对象的属性方法 4.何谓对象引用 5.实例化 类和对象的概念 万物皆对象,客观存在的事物皆为对象.我们大到名胜古迹,小道生活中的一件物品,例如 ...
- Java入门 - 面向对象 - 01.继承
原文地址:http://www.work100.net/training/java-inheritance.html 更多教程:光束云 - 免费课程 继承 序号 文内章节 视频 1 概述 2 继承的特 ...
- Java入门 - 面向对象 - 02.重写与重载
原文地址:http://www.work100.net/training/java-override-overload.html 更多教程:光束云 - 免费课程 重写与重载 序号 文内章节 视频 1 ...
- Java入门 - 面向对象 - 04.抽象类
原文地址:http://www.work100.net/training/java-abstract.html 更多教程:光束云 - 免费课程 抽象类 序号 文内章节 视频 1 概述 2 Java抽象 ...
- Java入门 - 面向对象 - 05.封装
原文地址:http://www.work100.net/training/java-encapsulation.html 更多教程:光束云 - 免费课程 封装 序号 文内章节 视频 1 概述 2 封装 ...
- 《java入门》第一季之类(String类字符串一旦被赋值就没法改变)
毫无疑问,String类是java里面最重要的类之一.因此它有很多方法需要了解和掌握. 字符串一旦被赋值,值就不能发生改变: package cn.itcast_02; /* * 字符串的特点:一旦被 ...
- java入门——面向对象
简介 对象具有自己的状态和行为: 描述一个对象具有什么状态和行为的过程叫做建模,不同的意图下我们对同一个事物的描述会产生不同的模型. 类 类描述一类对象的状态和行为的模板.可以把类想象成一个汽车设计图 ...
- Java入门 - 面向对象 - 06.接口
原文地址:http://www.work100.net/training/java-interface.html 更多教程:光束云 - 免费课程 接口 序号 文内章节 视频 1 概述 2 接口的声明 ...
随机推荐
- 玩转Java多线程(Lock.Condition的正确使用姿势)
转载请标明博客的地址 本人博客和github账号,如果对你有帮助请在本人github项目AioSocket上点个star,激励作者对社区贡献 个人博客:https://www.cnblogs.com/ ...
- 微服务SpringCloud之服务注册与发现
在找.net core 微服务框架时发现了Steeltoe开源项目,它可以基于Spring Cloud实现.net core和.net Framework的微服务.正好之前也有学习过SpringBo ...
- VB程序逆向常用的函数
本文转载!!! 原文地址:http://www.cnblogs.com/bbdxf/p/3780187.html 1) 数据类型转换: a) __vbaI2Str 将一个字符串转为8 位(1个字 ...
- 【数据结构】红黑树-Java实现
WIKI:https://en.wikipedia.org/wiki/Red%E2%80%93black_tree 转:红黑树(五)之 Java的实现 总结的比较精炼的: http://www.cnb ...
- Python连载20-偏函数&zip函数&enumerate函数
一. 偏函数 二. #先举个例子 #把字符串转换为十进制数字 int(') #help(int),int函数中有一个参数base代表把它转换某个进制的数字 #把八进制的字符串转换为十进制 eight ...
- 02-三种Bean装配机制(二)
上一篇已经介绍了自动化装配https://www.cnblogs.com/fionyang/p/11123900.html 接下来就要介绍两种显示装配的方式了,分别是java代码装配和XML文件装配. ...
- golang开发:类库篇(二) Redis连接池的使用
为什么要使用连接池 一个数据库服务器只拥有有限的连接资源,一旦所有的连接资源都在使用,那么其它需要连接的资源就只能等待释放连接资源.所以,在连接资源有限的情况下,提高单位时间的连接的使用效率,缩短连接 ...
- 为什么wepy的数据无法渲染到实例里面去
为啥明明WEPY是将数据渲染到视图还会出这个问题呢? 因为只是类似于 Vue 框架,所以不能完全实现数据渲染,尤其当异步操作的时候. (1)WePy 普通数据绑定. WePY使用脏数据检查对setDa ...
- SPOJ MINSUB - Largest Submatrix(二分+单调栈)
http://www.spoj.com/problems/MINSUB/en/ 题意:给出一个n*m的矩阵M,和一个面积k,要使得M的子矩阵M'的最小元素最大并且面积大于等于k,问子矩阵M'的最小元素 ...
- Html自动播放音乐代码
<audio id="bgmMusic" src="demo.mp3" autoplay="autoplay" loop=" ...