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 接口的声明 ...
随机推荐
- 查看linux系统时间和时区
参考地址:http://lidao.blog.51cto.com/ 一.使用date命令查看系统时间 [root@benbang ~]# date -R Tue, 01 Aug 2017 15:43: ...
- TCP UDP socket http webSocket 之间的关系
---恢复内容开始--- OSI&TCP/IP模型 要弄清tcp udp socket http websocket之间的关系,首先要知道经典的OSI七层模型,与之对应的是TCP/IP的四层模 ...
- happy machine learning(First One)
从前几天起我就开始了愉快的机器学习,这里记录一下学习笔记,我看的是吴恩达老师的视频,这篇博客将会按吴老师的教学目录来集合各优良文章,以及部分的我的个人总结 1. 监督学习与无监督学习 监督:给定一个 ...
- Kafka 学习之路(四)—— Kafka消费者详解
一.消费者和消费者群组 在Kafka中,消费者通常是消费者群组的一部分,多个消费者群组共同读取同一个主题时,彼此之间互不影响.Kafka之所以要引入消费者群组这个概念是因为Kafka消费者经常会做一些 ...
- composer-laravel-China源和官方源
composer config -g repo.packagist composer https://repo.packagist.org composer config -g repo.packag ...
- redis 是如何做持久化的
Redis 是一个键值对数据库服务器.基于内存存储数据,它常被用做缓存数据库,用来替代 memcached.官网:https://redis.io/ 什么是持久化? 持久化,指将数据存储到可永久保存的 ...
- Linux环境下虚拟环境virtualenv安装和使用(转)
virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够: 1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用 ...
- vue中ajax应用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SQL Server 2016 + AlwaysOn 无域集群
目录 AlwaysOn 搭建 WSFC 配置计算机的 DNS 后缀 安装故障转移集群 验证集群 创建集群 创建文件共享见证 配置 AlwaysOn 新建可用性组 创建侦听器 可读副本的负载均衡 主角色 ...
- idea-Java文件结构
从项目目录来看 ,分级为project-module-package-classname.java 其中.java文件中包含至多一个publicclass.class文件和多个普通.class文件 . ...