理解Java的类与对象
类与对象是面向对象编程语言中最重要的一个基本概念,Java也不例外。理解了类与对象的概念,学习起Java来就会容易很多。
本篇为大家介绍java类与对象的概念。在我们开始讨论类与对象之前,让我们先进入到生活中的一个场景:制作月饼! 想象一下,中秋到了,你想为家人做出10个带精美花纹的月饼,如果只有食材和两只手,这十个带精美花纹月饼的制作一定是个漫长的过程,而且一定是会存在大小、形状、花纹都不完全一样的情况。于是智慧的古人从宋朝开始就发明了月饼模具,这个月饼模具的使用就大大提高了制作月饼的效率,而且制作出来的月饼,大小、形状和花纹肯定还是一模一样的。
这个场景放到Java语言中其实就是类与对象的概念,月饼模具就相当于java的类(class),制作出来的一个个具体的月饼就相当于java的对象(object)。制作月饼的模具提供了复用、效率和统一的好处,Java类的存在也同样是出于类似的目的。
在学习中我们要知道每一个技术的引入、每一个工具的引入都是为了解决之前的问题的,当我们知道它们引入的初衷时,理解起来也就容易很多。
好了下面我们就来具体了解下Java中类与对象的概念:
类Class:
类是某类群体一些共同特征的抽象集合。这些抽象出来的特征一般包括:静态特征和动态特征。
静态特征在java中称为属性(field)、动态特征在java中称为方法(method)
举个例子:比如“人类”就是一个抽象的广义的概念,它的静态和动态特征如下:
静态属性:姓名、性别、年龄、身高等
动态方法:吃饭、跑步、学习、唱歌等
但是人类是一个抽象的概念,你不能说人类具体叫什么名字,性别是男是女,你说人类你把这个月饼吃掉它也无法做这件事。在现实中有这些具体信息和可以把月饼真正吃掉的是一个个具体的活生生的人,比如张三、比如李四,他们就是对象。
对象Object:
对象是类的一个具体实例,是真正可以将类中的属性具体化、真正可以执行类中的方法即动作的现实实例。
比如:张三、李四
那在Java中是如何定义类的呢?
定义类需要使用class关键字来定义,下面是定义类的语法:
class 类名称{
数据类型 属性名(变量);
数据类型 属性名(变量);
//定义方法
public 返回值类型 方法名称(参数1,参数2…){
程序语句;
[return 表达式;]
}
}
具体的例子:
public class Human {
String name;
int age;
String gender;
public void eating() {
}
public void singing() {
}
public void sleeping() {
}
}
上面例子中 String name,int age, String gender这些属于静态的属性,eating(),singing(),sleeping()属于动态的方法。
我们说类是属于抽象的概念,就像是造月饼的模具,那在java中如何产生出一个个具体的对象呢?
在Java中通过关键字new来实例化对象,实例化对象的基本语法如下:
类名称 对象名称 = new 类名称();
例:通过上面的类“Human”,创造一个叫“张三”的对象
Human ZhangSan = new Human();
注:new关键字实际的主要功能是为这个对象开辟了内存空间,就像张三在地球上会占用一定的空间一样,通过new关键字创造的对象在内存中也会占用一定的空间。
创建对象的主要目的就是让他能够执行具体的动作,在java中可以通过对象.方法();来执行具体的动作,比如让张三吃饭 ZhangSan.eating(); 让张三唱歌ZhangSan.singing();等。
本篇的主要目的是让大家理解一下类(class)与对象(object)的概念,属性(field)与方法(method)的概念。
为了让刚接触java的同学好理解,我想了一个生活中做月饼的例子,也许没那么严谨,但是帮助大家好理解。
在后面我们开始具体写selenium java脚本时,你会发现,之前在搭建环境文章中引入的selenium的jar包,里面主要就是包含了操作web的一些常用的类,类中定义了一些具体操作网页元素的方法,比如点击、比如向文本框输入内容,比如鼠标键盘操作等,这些具体的方法selenium团队都已经实现好了,我们要做的就是知道哪个类里提供了点击操作,哪个类里提供了键盘鼠标操作,然后通过new关键字在我们自己的脚本中创造一个实例对象,通过对象调用这些方法罢了!很简单!
****************************************************************************************************
最近我会持续更新Selenium Java的相关文章,也请大家多多关注我的视频课程
全网最新、最完整、最具性价比、并且会持续保持更新的自动化测试课程
Selenium3 Java自动化测试完整教程
*****************************************************************************************************