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线程概念
一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在 ...
随机推荐
- C++模板的介绍
作者:良知犹存 转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN 1. 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码.C++模板的作用,类 ...
- 基于Qt的tcp客户端和服务器实现摄像头帧数据处理(客户端部分)
项目简述 实现客户端调用摄像头,并以帧的形式将每一帧传输到服务端,服务端将图片进行某些处理后再返回给客户端.(客户端与服务端通信代码部分参考<Qt5 开发及实例>) 项目步骤 客户端的编写 ...
- Codeforces Round #626 Div2 D,E
比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...
- Educational Codeforces Round 90 (Rated for Div. 2) D. Maximum Sum on Even Positions(dp)
题目链接:https://codeforces.com/contest/1373/problem/D 题意 给出一个大小为 $n$ 的数组 $a$,下标为 $0 \sim n - 1$,可以进行一次反 ...
- 2019牛客多校 Round4
Solved:3 Rank:331 B xor 题意:5e4个集合 每个集合最多32个数 5e4个询问 询问l到r个集合是不是都有一个子集的xor和等于x 题解:在牛客多校第一场学了线性基 然后这个题 ...
- Educational Codeforces Round 89 (Rated for Div. 2)D. Two Divisors 线性筛质因子
题目链接:D:Two Divisors 题意: 给你n个数,对于每一个数vi,你需要找出来它的两个因子d1,d2.这两个因子要保证gcd(d1+d2,vi)==1.输出的时候输出两行,第一行输出每一个 ...
- Codeforces Round #531 (Div. 3) B. Array K-Coloring (结构体排序)
题意:给你\(n\)个数字,用\(k\)种颜色给他们涂色,要求每个数字都要涂,每种颜色都要用,相同的数字不能涂一样的颜色. 题解:用结构体读入每个数字和它的位置,然后用桶记录每个数字出现的次数,判断是 ...
- 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛) C.Coronavirus (BFS)
题意:有一个图,要求从\(S\)走到\(E\),\(.\)表示可以走的路径,\(*\)周围的八个方向均不能走,要求判断是否能走到\(E\),若能,输出最小路径长度,否则输出\(Impossible\) ...
- ZYB loves Xor I HDU - 5269 字典树
题意: T组样例,给你n个数.你要找出来这n个数中任意两个数的二进制位中 最低位不同 的位置(假设是k),然后让所有2^k加起来就是结果 什么意思? 例如4 和 2 4的二进制是(100),2的二 ...
- [已完成+附代码]CS:APP:Lab6-ShellLab
由于我的第五个实验的partB部分一直出问题.而且修了好久没解决先不管了 这个实验建议一定要认真读完csapp全书的第八章.不然可能会毫无思路.千万不要上来直接做. 0. 环境配置和实验下载 利用do ...