[Java初探08]__简单学习Java类和对象
- 前言
在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使用.
类
那么,这里为什么要先将类,而不是像之前一样先讲对象呢,那是因为在前面的学习中,我们知道了,对象是类的一个实例.类是封装兑现属性和行为的载体,所以对象的一切都在类之中,对象的属性,行为的调用都得先通过实例才能使用,它们是一个包含关系,对象是依赖于类的.
- 类在Java中的创建
我们都知道,在我们新建一个Java文件的时候,大多是这样的.
这充分说明了在Java语言中,一切都是基于类与对象建立的.
类在Java语言中式通过class关键字定义的.而且还可以使用各种修饰符对其权限进行限定,关于修饰符,在前面也有讲到过.
class cat{
}
- 类的成员变量与成员方法
我们通过观察类文件的结构可以发现是这样的.
我们可以发现:
在一个Java文件中不仅是可以声明多个类的,还可以在类的内部定义一个类,这可以叫做类的嵌套使用了,这种机制应该就是Java中的内部类的特性.我们在后面在做详细学习.
我们还可以在Structure视窗里发现,类的结构是由方法体和成员变量组成的.
成员变量
我们已经了解到类封装对象属性和行为的载体,而对象的属性是通过成员变量定义的,行为是通过方法创建的.一个类的成员变量就是封装对象的某种属性,成员变量也可以通过修饰符限定其使用范围,因此有静态变量,成员变量,局部变量,常量等区分,关于它们之间的联系与区别,这一点在前面的Java基础中应该有讲过.
- 成员方法
我们可以通过实例化一个对象,然后调用其属性和方法.而在通常情况下,一个对象的属性是不会在封装类就被初始化的,只会被定义,应为对象的属性通常都是可变的,我们只能通过实例化对象,来确定一个具体对象的具体属性.
那么我们应该如何来调用到对象的属性和设置对象的属性呢.这时我们就会理所当然的想到,当然时使用方法了嘛.是的我们只需要在类中封装获取和设置对象属性的方法就可以了.
而这类获取和设置成员变量的方法就叫做成员方法.(因为其都具有很明显的特征和作用)
// 成员方法,获取成员变量
public boolean getindepentThing(){
return this.independentThing;
}
// 成员方法,设置成员变量
public void setindepentThing(boolean independentthing){
this.independentThing = independentthing;
}
类的构造方法
构造方法是类中的另以特殊的方法体,构造方法是一个与类名相同的方法,对象的创建就是通过构造方法来完成的.每当类实例化一个对象时,类都会调用构造方法,所以构造方法其实就是相当与实例化对象时的初始化一样.- 构造方法是没有返回值的
- 构造方法的名称要与本类的名称相同.
为什么构造方法的名称必须与类名称相同,我们看看对象的实例化:
animal animal = new animal();
如此,我们大概明白了,之所以构造方法的名称和类名称相同,是为了在对象的实例化的时候,通过new animal(),使构造方法在对象的实例化的同时也运行了,这样才能实现在实例化对象就能够初始化对象的属性的目的.构造方法的存在,解决了对象的初始化问题,使得我们每次实例化的对象都拥有我们想要设定的属性值,之后我们就可以直接调用其属性,而不需要频繁的使用成员方法来设定对象的值.
/**
* 构造方法
*/
public animal(){ // 无参的构造方法.
this.independentThing= false;
}
public animal(boolean independentthing){ // 有参的构造方法
this.independentThing = independentthing;
}
- 类中普通的方法
在之前的学习中我们已经了解了关于方法在Java中的定义,使用返回值类型修饰符+方法名.即可创建一个方法体.而我们常常会使用到的void修饰符是分特殊的,它不需要我们return一个值,void的字面意思就是空,我们治理只需要了解到void修饰的方法体,是不需要返回值的.
在类和对象的学习中,我们又了解到,类中的方法其实就是对某个对象的行为的一种封装,所以类中最常见的方法,其实就是这种对行为封装的方法,也可以说是我们自定义的方法,因为这种方法的所有内容都是我们自定义的.这类方法其实才是最普遍存在于类中的.
void eat(){
System.out.println("动物的吃行为");
}
- 类的主方法
我们在前面的学习中,了解到一个类只能有一个主方法,而这个主方法是用来让Java编译器识别,编译运行的.为什么要这样设计,我们其实已经可以分析的出来了,因为Java语言是基于类和对象的基础上的一门语言,其基本的组成单位其实可以说就是众多的类,然后由众多的类组成的类库组成了Java的标准类库,我们都是基于Java标准类库来编程的,如果不定义一个主方法用来编译运行,那么各种类中的不计其数的方法该如何来标记,如何知道该编译运行哪个方法,调用哪个类.所以类的主方法的存在是必然的一个演变过程.
类的主方法是类的入口点,它定义了程序从何处开始,主方法提供程序流向的控制,Java编译器通过主方法来执行程序.
主方法的语法是固定的:
public static void main(String[] args){
// 方法体
}
我们从主方法的定义可以看到其具有的一些特性:
主方法是一个静态的方法,所以如果要直接在主方法中调用其他方法,则调用的方法也必须是静态的才行.
主方法是没有返回值的.
主方法的形式参数是数组,其中arg[0]~arg[n]表示程序的第一个参数到第n个参数.可以使用args.lenght获取到这个值.
对象
我们现在已经非常了解了,对象就是由类抽象出来的一个实例.比如人类中有一个叫小舍,性别为男的人.那么这个人就是从人类中实例化出来的一个对象.
对象的创建
其实我们在之前的学习中已经或多或少的有使用到对象,我们是这样创建一个对象的:
animal animal = new animal();
animal animal12 = new animal(true);
在字符串的学习中,我们使用过String类的构造方法,创建一个初始化对象.
String astr3 = new String(a,0,2);
String astr4 = new String(b);
String astr5 = new String(b,0,2);
在Java语言中我们通过new操作符来创建对象.
这里其实有一点小疏忽,一般情况下,类的成员变量一般不会设置成公开的,需要使用private修饰符将其修饰为私有的,然后通过成员方法来访问和设置它的值.
private boolean independentThing;
System.out.println(animal.getindepentThing());
animal1.setindepentThing(false);
我们实例化了对象之后,我们就可以通过对象来调用其属性和行为(就是方法)了
animal.eat();
System.out.println(animal.independentThing);
- 对象的引用
在Java语言中,尽管一切都可以看作对象,但实际上的操作标识符是一个引用,那么引用在Java中是怎么体现的.
// 类名 对象引用名称,
animal animal;
实际上,引用并不一定要有一个对象相关联,引用和对象相关连的语法是:
animal animal = new animal();
new就是创建对象的操作符,整个语句相当于创建一个引用animal类的对象,这就是实例化对象的过程.
- 对象的比较
我们知道在程序的实际中经常会使用到比较判断,而我们在前面的基础数据类型和运算符的学习中知道了,符是用来比较两个数据的.那么我们现在又知道了对象在Java中的地位是举足轻重的,并且会时长用到,那么对象的比较是否也可以使用符来比较呢.
System.out.println("字符串是否和abc相等:"+mstr.equals("abc"));
System.out.println("字符串是否和abc相等:"+(mstr=="abc"));
显然,是不行的,因为我们在前面字符串的比较时就简单的了解到,号是不能用来比较两个String类型的值的,需要通过String类的equals()方法比较.对象的比较是通过其相应类的equals()方法进行比较的.而不能使用符比较,这是因为==比较的是两者引用的地址是否相等.而equals方法比较的才是比较两个对象引用的内容是否相等.
- 对象的销毁
每个对象都有声明周期,当生命周期结束的时候,对象就会被销毁,其分配的内存就会被回收,在其他一些语言中,对象的内存回收可能会需要手动销毁回收,但在Java语言中,拥有一整套完整的垃圾回收机制,可以根据对象的生命周期来回收其内存,Java的垃圾回收机制也不单单运用在对象上,它对于Java的内存回收有一整个控制回收机制.我们在这里就简单的了解一下就行.
- 源代码
package day_4_8;
/**
* @outhor xiaoshe
* @date 2019/4/8 - @time 17:22
*类
* 在Java语言中,类是使用class关键字来定义的
* 类可以有不同种,通过类前面的关键字来修饰
* 也就是Java修饰符,一般情况下,修饰符限定了类的使用范围.
* class后接类名,class是定义类的关键字,具体的类名需要自定义命名,
* 命名规则是需要遵循java标识符的规则的.
*/
public class sty_class {
// 通过主类里的主方法来调用不同类的不同方法.因为只有主方法才会被编译运行
// 所以想要使用任何类,或类的方法的使用.都需要通过主方法调用才能实现.
public static void main(String[] args) {
// 想要调用某个类的某个方法,就需要实例化一个这个类的对象,通过实例化对象调用方法.
// 无参的构造方法构建对象.
animal animal = new animal();
animal.eat();
System.out.println(animal.getindepentThing());
//有参的构造方法,构建对象
animal animal1 = new animal(true);
animal1.setindepentThing(false);
System.out.println(animal1.getindepentThing());
System.out.println(args.length);
}
public static class book{
}
}
/**
* 我们在同一个java文件里,可以声明多个不同的类.
* 声明animal动物类.
* 通过类来封装对象的属性和行为.
*/
class animal{
// 在哦Java语言中,通过类的成员变量表示对象的属性.
private boolean independentThing;
// 成员方法,获取成员变量
public boolean getindepentThing(){
return this.independentThing;
}
// 成员方法,设置成员变量
public void setindepentThing(boolean independentthing){
this.independentThing = independentthing;
}
/**
* 构造方法
*/
public animal(){ // 无参的构造方法.
this.independentThing= false;
}
public animal(boolean independentthing){ // 有参的构造方法
this.independentThing = independentthing;
}
// 在Java中通过构建方法的形式,来表示对象的行为.
void eat(){
System.out.println("动物的吃行为");
}
}
- 后记
类和对象可以说是Java语言的基础之基础,重中之重,理解清楚面向对象思想和学明白Java类和对象的机制是学习Java语言的必不可缺的阶段,在理解它们的基础上学习Java能够达到事半功倍的地步.因为可以说Java语言的一切几乎都是建立在类和对象上的,当你把类和对象理解透彻了,在其基础上学习其它知识怎会不更加简易呢.?
更新时间:
2019-4-8
21:04
[Java初探08]__简单学习Java类和对象的更多相关文章
- JAVA基础语法:函数(方法)、类和对象(转载)
4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...
- Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员、局部),匿名对象的调用,构造代码块(5)
Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员.局部),匿名对象的帝爱用,构造代码块(5)
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- Javascript学习6 - 类、对象、继承
原文:Javascript学习6 - 类.对象.继承 Javasciprt并不像C++一样支持真正的类,也不是用class关键字来定义类.Javascript定义类也是使用function关键字来完成 ...
- 《python基础教程(第二版)》学习笔记 类和对象(第7章)
<python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person: def setName(self,name): self.name=n ...
- [java初探10]__关于数字处理类
前言 在我们的日常开发过程中,我们会经常性的使用到数字类型的数据,同时,也会有众多的对数字处理的需求,针对这个方面的问题,在JAVA语言中.提供解决方法的类就是数字处理类 java中的数字处理类包括: ...
- [Java初探07]__关于面向对象的简单认识
前言 类和对象,在我们学习Java语言的过程中,它们无时无刻不存在着,在我们还远未详细弄明白它们的意义之前,在我们不知不觉的下意识里,我们都会直接或间接的用到它们,这是因为Java是一门面向对象的语言 ...
- [Java初探04]__字符串(String类)相关
前言 接下来将暂时将重心偏移向实际操作,不在将大量时间花费在详细的知识点整理上,将会简略知识总结笔记的记录,加强实际练习的时间,实例练习篇也不再同步进行,我会将部分我觉得重要的源码更新在每节知识点后面 ...
- [java初探09]__关于java的包装类
前言 在Java语言的学习过程中,我们逐渐的理解了Java面向对象的思想,与类和对象的应用.但是在基本数据类型的使用上,我们无法将其定义为一个对象,通过使用对象的方法来使用它们,但是Java语言的思想 ...
随机推荐
- 微信接入时tomcat的端口调整
必须以http://或https://开头,分别支持80端口和443端口. www.xx.com 等同于 www.xx.com:80 但tomcat默认端口是8080,需要修改为80 修改方法: TO ...
- MFC源码实现文件对照表
CDocManager类[实现文件] /SRC/DOCTEMPL.CPP CSingleDocTemplate类[实现文件] /SRC/DOCSINGL.CPP CWinApp::OnFileOpen ...
- Java Applet在IE中浏览
1. IE --> 工具 --> Internet选项 --> 取消“将Java1.6.0.4加入Internet”选择项. 2. 开始 --> 控制面板 --> Jav ...
- 给公司服务器装web服务器,邮件服务器——安装SecureCRT
系统用centos5.9 首先在window上安装SecureCRT终端 1:首先验证安装secureCRT的本地机和linux服务器能否ping的通: 2:判断linux 服务端是否安装了ssh 若 ...
- noip第5课作业
1. 计算税收 [问题描述] 对某产品征收税金,在产值1万元以上收税5%:在1万元以下但在5000元或者以上的征收税3%:在5000元以下但在1000元或以上征收税2%:1000元以下的免收税 ...
- Android FragmentActivity 嵌套 Fragment 调用startActivityForResult返回的requestCode错误
Android FragmentActivity 嵌套 Fragment 调用startActivityForResult返回的requestCode错误 此时,要在调用startActivityFo ...
- SpringMVC随笔之——@responsebody【引用snowolf博文】
首先说RESTful 风格是什么 :(RESTful 风格:把请求参数变成请求路径的一种风格.) OK,一句话总结完毕 @responsebody表示该方法的返回结果直接写入HTTP response ...
- hive 修复分区、添加二级分区
我们在之前的文章中,介绍了二级分区,混合分区,静态分区,动态分区的区别和建表. 今天我们聊下,当我们建好分区表.并且通过程序在表的分区目录(location)下,写入了文件. 如何在hive中查询到插 ...
- 前端开发 - JavaScript 词法分析
JavaScript代码运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 1.分析函数的参数 2.分析函数的变量声明 3.分析函数的函数声明表达式 具体步骤如下: 函数在运行的瞬间,生成 ...
- Delphi XE 新功能试用:多种皮肤样式静、动态设置方法
静态方式:1.新建VCL Forms Application:2.打开菜单Project - Application - Appearance:3.在Custom Styles中可选择所有默认带的皮肤 ...