之前的文章我们介绍了 Java 的数组,本章我们来看一下 Java 的对象和类。

Java 是一种面向对象语言,那什么是对象呢,对象在编程语言中属于一个很宽泛的概念,我们可以认为万事万物都是对象,每个对象都有其状态和行为,例如一只狗会有颜色,品种,性别等状态,也有跑,吃,睡等行为。

在编程语言中,会用一个类来承载这个对象,类是一个模板,它描述一类对象的行为和状态。

在之前的文章中我们没有引入对象的概念,如果我们想要打印输出一个人的基本信息,如下:

 public class HelloWorld {
public static void main(String[] args) {
String name = "zhangsan";
int age = 18;
String gender = "男";
print(name,age,gender); // 姓名:zhangsan 年龄:18 性别:男
} static void print(String name, int age, String gender) {
System.out.print("姓名:"+ name);
System.out.print("年龄:"+ age);
System.out.print("性别:"+ gender);
}
}

上面其实是一个面向过程的编程,我们先定义一个 print 方法,分别传入姓名,年龄,性别,然后再分别打印输出,我们就可以定义变量,年龄,性别,调用该 print 方法来实现我们想要的功能。

其中有一个问题就是当我们需要再次输出另一个人的信息时,我们需要再次将 name,age,gender 传入,其实我们可以将这三个变量定义到一个对象中来使用,如下:

 public class HelloWorld {
public static void main(String[] args) {
Emp e = new Emp(); // 创建一个 Emp 对象
e.name = "zhangsan";
e.age = 18;
e.gender = "男";
print(e); // 姓名:zhangsan 年龄:18 性别:男
} static void print(Emp e) {
System.out.print("姓名:"+ e.name);
System.out.print("年龄:"+ e.age);
System.out.print("性别:"+ e.gender);
}
} class Emp{
String name;
int age;
String gender;
}

在上面的代码中,我们将 print 方法中传入的变量变成了一个 Emp 对象,Emp 对象是我们自己定义出来的,它和我们之前所讲的 Array 其实是一个道理:  arr = new int[5]; ,生成一个 5 个长度的数组。

在上面的代码中,我们定义的 print 方法其实作用就是用于输出打印我们需要的信息,我们同样也可以将其放到我们定义的 Emp 类中,如下:

 public class HelloWorld {
public static void main(String[] args) {
Emp e = new Emp(); // 创建一个 Emp 对象
e.name = "zhangsan";
e.age = 18;
e.gender = "男";
e.print(); // 姓名:zhangsan 年龄:18 性别:男
}
} class Emp {
String name;
int age;
String gender; void print() {
System.out.print("姓名:" + name);
System.out.print("年龄:" + age);
System.out.print("性别:" + gender);
}
}

至此我们其实就已经果果面向对象的思维定义了一个类,当我们需要再定义另一个人的信息时,直接调用该对象的属性和方法就可以了。

在我们初学编程语言的时候,都是由面向过程慢慢开始的深入到面向对象的,但面向过程由很多缺点,如下:

1、缺乏对数据的封装

2、数据和方法分离了

如上面的例子中最开始我们需要什么数据都是先自己定义,数据 name age gende 和方法 print 是分开的,后来我们改为统一到一个 Emp 类中,这样就做到了数据和方法的统一。

我们接下来看下面的代码:

 public class HelloWorld {
public static void main(String[] args) {
Emp e = new Emp(); // 创建一个 Emp 对象
e.print(); // 姓名:null 年龄:0 性别:null
}
} class Emp {
String name;
int age;
String gender; void print() {
System.out.print("姓名:" + name);
System.out.print("年龄:" + age);
System.out.print("性别:" + gender);
}
}

在创建 Emp 对象后,我们并没有对类的 name age 和 gender 进行赋值,直接调用 print() 方法,结果并没有出现编译错误,这是由于在我们定义一个变量的时候,java 会为我们提供一个默认的值,字符串为 null,数字为 0。

Java 从入门到进阶之路(六)的更多相关文章

  1. Java 从入门到进阶之路(十六)

    在之前的文章我们介绍了一下 Java 中类的多态,本章我们来看一下 Java 中类的内部类. 在 Java 中,内部类分为成员内部类和匿名内部类. 我们先来看一下成员内部类: 1.类中套类,外面的叫外 ...

  2. Java 从入门到进阶之路(二十六)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 的子接口 List,本章我们来看一下 Java 集合框架中的Collection 的子接口 Queue. 在之前我们讲 ...

  3. Java 从入门到进阶之路(二十)

    在之前的文章我们介绍了一下 Java 中的包装类,本章我们来看一下 Java 中的日期操作. 在我们日常编程中,日期使我们非常常用的一个操作,比如读写日期,输出日志等,那接下来我们就看一下 Java ...

  4. Java 从入门到进阶之路(二十五)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 的子接口 List的 增删改查和与数组间相互转换的方法,本章我们来看一下 Java 集合框架中的Collection 的 ...

  5. Java 从入门到进阶之路(一)

    写在前面:从本片文章开始,将记录自己学习 Java 的点滴路程,目标定的并不是让自己成为一个 Java 高手,而是让自己多掌握一门语言,使自己的知识面更广一些,在学习 Java 的过程中如有不对的地方 ...

  6. Java 从入门到进阶之路(二)

    之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...

  7. Java 从入门到进阶之路(三)

    之前的文章我们介绍了 Java 中的变量和基本数据类型,本章我们来看一下 Java 的运算符和表达式. 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操 ...

  8. Java 从入门到进阶之路(四)

    之前的文章我们介绍了 Java 的运算符和表达式,本章我们来看一下 Java 的循环结构. 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性进行. 循环的 ...

  9. Java 从入门到进阶之路(五)

    之前的文章我们介绍了 Java 的循环结构,本章我们来看一下 Java 的数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. 数组 - 相同数据类型的元 ...

随机推荐

  1. Spring-Boot:多种配置注入方式

    package com.example.el; import org.springframework.beans.factory.annotation.Value; import org.spring ...

  2. 分布式CAP理论

    分布式CAP理论 来自wiki: 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下 ...

  3. 基于python的mysql复制工具

    一简介 python-mysql-replication 是由python实现的 MySQL复制协议工具,我们可以用它来解析binlog 获取日志的insert,update,delete等事件 ,并 ...

  4. Redis学习总结(一)--Redis入门

    Redis 概念 1.Redis 是什么 Redis 是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理. 2.Redis 能干什么 Redis 支持字符串.哈希 ...

  5. Nginx反向服务器搭建

    Nginx环境搭建 下载解压Nginx源码包 可以通过已有的压缩包 这里也可以通过yum的在线下载 wget http://nginx.org/download/nginx-1.13.7.tar.gz ...

  6. 前端H5与安卓和ios之间通信

    在一些app场景中,经常看到app里面嵌套H5页面, 安卓和ios提供一个空壳子,方法两者互相调用.上一周就是写H5页面让安卓和ios调用使用,中间传参,接受参数.通过 window.wx 对象调用一 ...

  7. python 冷知识(装13 指南)

    python 冷知识(装13 指南) list1 += list2 和 list1 = list1 + list2 的区别 alpha = [1, 2, 3] beta = alpha # alpha ...

  8. codeforces 764 C. Timofey and a tree(dfs+思维)

    题目链接:http://codeforces.com/contest/764/problem/C 题意:给出一个树,然后各个节点有对应的颜色,问是否存在以一个点为根节点子树的颜色都一样. 这里的子树颜 ...

  9. 微信公众号之获取openId

    在小伙伴们开发微信公众号.小程序或者是在微信内置浏览器打开的项目时,会遇到的第一个问题就是如何获取openId,今天小编就给大家带来的是如何获取openId. 首先   我们要从微信开发者后台得到ap ...

  10. VS Code 前端开发常用快捷键插件

    一.vs code 的常用快捷键 1.注释:a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/ b) 取消单行注释:[ctrl+k,ctrl+u] (按下ctrl不放,再按k + u) ...