Java基本概念:类
一、描述
- 类是一种抽象的数据类型,它是对某一类事物整体的描述或定义,但是并不能代表某一个具体的事物。
- 例如,我们生活中所说的词语:动物、植物、手机、电脑等等。这些也都是抽象的概念,而不是指的某一个 具体的东西。
二、类与对象的关系
- 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是对对象的抽象。
- 从代码运行角度考虑是先有类后有对象,类是对象的模板。
- 例如Person类、Pet类、Car类等,这些类都是用来描述或定义某一类具体的事物应该具备的特点和行为,而对象是抽象概念的具体实例,例如张三就是人的一个具体实例。
- 在java中,没有类就没有对象,然而类又是根据具体的功能需求,进行实际的分析,最终抽象出来的。
示例:
/*
张三是引用类型变量,它指向一个Person对象,这个Person对象就是Person类的一个具体实例。
能够使用的是具体实例,而不是类。
类只是给对象的创建提供了一个参考的模板而已。
*/
Person zhangSan = new Person("张三", 20, "China");
三、'this'关键字
Ⅰ、'this'在类中的作用
区别成员变量和局部变量
public class Student {
private String name; public void setName(String name) {
/* this.name表示类中的属性,name表示形式参数 */
this.name = name;
}
}
调用类中的其他方法
public class Student {
private String name; public void setName(String name) {
this.name = name;
} public void print() {
/*
表示调用当前类中的setName方法。
默认情况下,setName("tom")和this.setName("tom")的效果是一样的。
*/
this.setName("tom");
}
}
调用类中的其他构造器
public class Student {
private String name; public Student() {
/*
调用一个参数的构造器,并且参数的类型是String。
注意:
this这种调用类中其他构造器的用法,只能在构造器中使用,普通的方法是不能用的。
并且这种调用的代码只能出现在构造器中的第一句。
*/
this("tom");
} public Student(String name) {
this.name = name;
}
}
Ⅱ、'this'在类中的意义
- 'this'关键字在类中代表该类将来创建出的对象。
- 'this'关键字是在对象的内部来引用对象本身,所以'this'可以调用成员变量和成员方法。
- 同一个类的不同对象都有一个属于自己的'this'。
示例:
/*
this和person打印的结果是一样的。
那么其实也就是变量person是从对象的外部来引用对象,而this是在对象的内部来引用对象本身。
*/
public class Person {
private String name;
public Person() {
System.out.println("this = " + this);//this = com.conyoo.test.Person@5674cd4d
}
public static void main(String[] args) {
Person person = new Person();
System.out.println("person = " + person);//person = com.conyoo.test.Person@5674cd4d
}
}
四、对象
Ⅰ、对象和引用的关系
- 使用类类型、数组类型、接口类型声明出的变量,都可以指向对象,这种变量就是引用类型变量,简称引用。
- 引用'指向'对象。本质为引用保存了对象的地址值。
- 在程序中,创建出对象后,直接使用并不方便,所以一般会用一个引用类型的变量去接收这个对象,这个就是所说的引用指向对象。
- 对象和引用的关系,就如电视机和遥控器,风筝和线的关系一样。
Ⅱ、使用'new'创建与初始化对象
- 使用'new'关键字创建与初始化对象的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化,以及对类中构造器的调用。
示例:
/*
使用'new'关键字创建与初始化对象时程序内部执行的步骤:
1.为对象分配内存空间,将对象的实例变量自动初始化为默认值。
2.如果代码中实例变量有显式赋值,那么就将之前的默认值覆盖掉。
3.调用类中对应的构造器。
4.把对象内存地址值赋值给声明的变量。
*/
Person person = new Person();
五、构造器
Ⅰ、简介
- 类中的构造器也称为构造方法,在进行对象创建的时候必须要调用。
特点:
- 构造方法名必须和类的名字相同。
- 构造方法没有返回类型,也不能写void。
作用:
- 使用'new'关键字创建对象的时候必须使用类的构造器。
- 构造器中的代码可以给对象中的属性进行初始化赋值。
示例:
public class Person {
private String name;
public Person() {
name = "张三";
}
}
Ⅱ、构造器重载
- 除了无参构造器之外,很多时候我们还会使用有参构造器,在创建对象时候可以给属性赋值。
示例:
public class Person {
private String name;
public Person() {
name = "张三";
}
public Person(String name) {
this.name = name;
}
}
Ⅲ、构造器间的调用
- 使用'this'关键字,在一个构造器中,可以调用同一个类中另一个构造器的代码。
- 'this'的这种用法不会产生新的对象,只是调用了构造器中的代码而已。一般情况下只有使用'new'关键字才会创建新对象。
示例:
public class Person {
private String name;
private Integer age;
public Person() {
this.name = "张三";
this.age = 20;
}
public Person(String name) {
this();
this.name = name;
}
}
Ⅳ、默认构造器
- 在java中,如果我们在编写类的时候没有写构造器,那么java文件在编译之后也会自动的添加一个无参构造器,这个无参构造器也被称为默认的构造器。
注意:
- 如果我们手动地编写了一个构造器,那么编译后就不会自动添加任何构造器了。
六、属性
属性,或者叫成员变量,用于定义该类或该类对象包含的数据。
属性作用范围是整个类体。
在定义属性时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
属性定义的格式:
/* 修饰符 */ 属性类型 属性名 /* = 初始值 */;
属性调用的格式:
- 对象或对象的引用.属性名
七、方法
- 方法是类和对象动态行为特征的抽象。
- 方法很类似于面向过程中的函数。
- 面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。
- 面向对象中,整个程序的基本单位是类,方法是从属于类或对象的。
方法定义的格式:
/* 修饰符 */ /* 返回值类型 */ 方法名 (/* 参数列表 */) /* 异常抛出类型 */{
/* 方法体 */
/* return语句 */
}
对象调用的格式:
- 对象或对象的引用.方法名(参数列表)
Java基本概念:类的更多相关文章
- -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中
本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait( ...
- 基础知识(05) -- Java中的类
Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...
- java问题:类的定义,对象的定义?
java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里 ...
- 【转】JAVA的StringBuffer类
[转]JAVA的StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBu ...
- java 并发工具类CountDownLatch & CyclicBarrier
一起在java1.5被引入的并发工具类还有CountDownLatch.CyclicBarrier.Semaphore.ConcurrentHashMap和BlockingQueue,它们都存在于ja ...
- Java并发工具类 - CountDownLatch
Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- Java基础概念1
一.Java数据类型 1.byte 字节型 1byte = 8bit 表示数范围:-2^7~2^7-1(-128~127): 2.short 短整型 2 byte = 16bit 表示数范围:-2^1 ...
- JDK1.8源码(一)——java.lang.Object类
本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...
- JAVA线程概念
一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在 ...
随机推荐
- LINUX中备份mysql数据库
1.在LINUX中创建备份目录 如:/home/backup 2.把sh脚本放到备份目录下 脚本如下 https://wws.lanzous.com/i1oCxlccapa密码:dter ...
- AtCoder Beginner Contest 174
第一次 ak ABC,纪念一下. 比赛链接:https://atcoder.jp/contests/abc174 A - Air Conditioner #include <bits/stdc+ ...
- codeforces#244(div.2) C
动漫节一游回来之后一直处于一种意识模糊的状态 看到大家都陆陆续续地过了C心里还是有点着急(自己没思路啊囧) 其实当时就在想该如何找到DFS中的一个环,然后再找到环路上最小的一个值 把所有环路上最小的值 ...
- 树链剖分(附带LCA和换根)——基于dfs序的树上优化
.... 有点懒: 需要先理解几个概念: 1. LCA 2. 线段树(熟练,要不代码能调一天) 3. 图论的基本知识(dfs序的性质) 这大概就好了: 定义: 1.重儿子:一个点所连点树size最大的 ...
- Educational Codeforces Round 96 (Rated for Div. 2) D. String Deletion (思维)
题意:有一个\(01\)串,每次操作要先删除一个位置上的元素,然后删除相同前缀和,直到字符串被删完,问最多能操作多少次. 题解: 对于一个长度大于\(1\)的相同前缀,我们最多只能对它操作一次,然后就 ...
- Codeforces Round #666 (Div. 2) C. Multiples of Length (贪心)
题意:给你一个由\(0,1,?\)组成的字符串,你可以将\(?\)任意改成\(0\)或\(1\),问你操作后能否使得该字符串的任意长度为\(k\)的区间中的\(0\)和$1的个数相等. 题解:我们首先 ...
- 怎样优化SQL
[原则一:选择需要优化的SQL] 1,选择需要优化的SQL:不是所有的SQL都需要优化,在优化的过程中,首选更需要优化的SQL; 怎么选择?优先选择优化高并发低消耗的SQL: 1,1小时请求1W次,1 ...
- Springboot如何启用文件上传功能
网上的文章在写 "springboot文件上传" 时,都让你加上模版引擎,我只想说,我用不上,加模版引擎,你是觉得我脑子坏了,还是觉得我拿不动刀了. springboot如何启用文 ...
- JavaScript 高级程序设计 (第4版) 思维导图/脑图 All In One
JavaScript 高级程序设计 (第4版) 思维导图/脑图 All In One JavaScript 高级程序设计 (第4版) 思维导图下载 JavaScript 高级程序设计 (第4版) 脑图 ...
- style element & web components
style element & web components style.textContent style.setContent bug style.textContent const st ...