一、描述

  • 类是一种抽象的数据类型,它是对某一类事物整体的描述或定义,但是并不能代表某一个具体的事物。
  • 例如,我们生活中所说的词语:动物、植物、手机、电脑等等。这些也都是抽象的概念,而不是指的某一个 具体的东西。

二、类与对象的关系

  • 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是对对象的抽象
  • 从代码运行角度考虑是先有类后有对象,类是对象的模板。
  • 例如Person类、Pet类、Car类等,这些类都是用来描述或定义某一类具体的事物应该具备的特点和行为,而对象是抽象概念的具体实例,例如张三就是人的一个具体实例。
  • 在java中,没有类就没有对象,然而类又是根据具体的功能需求,进行实际的分析,最终抽象出来的。

示例:

/*
张三是引用类型变量,它指向一个Person对象,这个Person对象就是Person类的一个具体实例。
能够使用的是具体实例,而不是类。
类只是给对象的创建提供了一个参考的模板而已。
*/
Person zhangSan = new Person("张三", 20, "China");

三、'this'关键字


Ⅰ、'this'在类中的作用

  1. 区别成员变量和局部变量

    public class Student {
    private String name; public void setName(String name) {
    /* this.name表示类中的属性,name表示形式参数 */
    this.name = name;
    }
    }
  2. 调用类中的其他方法

    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");
    }
    }
  3. 调用类中的其他构造器

    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. -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中

     本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait( ...

  2. 基础知识(05) -- Java中的类

    Java中的类 1.类的概念 2.类中的封装 3.对象的三大特征 4.对象状态 5.类与类之间的关系 ------------------------------------------------- ...

  3. java问题:类的定义,对象的定义?

    java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里 ...

  4. 【转】JAVA的StringBuffer类

    [转]JAVA的StringBuffer类    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBu ...

  5. java 并发工具类CountDownLatch & CyclicBarrier

    一起在java1.5被引入的并发工具类还有CountDownLatch.CyclicBarrier.Semaphore.ConcurrentHashMap和BlockingQueue,它们都存在于ja ...

  6. Java并发工具类 - CountDownLatch

    Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...

  7. 【JAVA零基础入门系列】Day11 Java中的类和对象

    今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...

  8. Java基础概念1

    一.Java数据类型 1.byte 字节型 1byte = 8bit 表示数范围:-2^7~2^7-1(-128~127): 2.short 短整型 2 byte = 16bit 表示数范围:-2^1 ...

  9. JDK1.8源码(一)——java.lang.Object类

    本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...

  10. JAVA线程概念

    一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在 ...

随机推荐

  1. HDU6661 Acesrc and String Theory【SA】

    Acesrc and String Theory Problem Description Acesrc is a famous string theorist at Nanjing Universit ...

  2. Java-Swing的JFrame的一些插件使用详解

    JFrame介绍: 在 JFrame 对象中可以使用add方法添加 AWT 或者 Swing 组件. JFrame 有一个 Content Pane,窗口能显示的所有组件都是添加在这个 Content ...

  3. cs寄存器

    练习 答案: 代码段: cs:ip指定的cpu认为是指令

  4. Beautiful numbers CodeForces - 55D

    题意: 找出区间[li,ri]内有多少数满足,这个数的每一个位的非0数都能把这个数整除 题解: 因为这个数每一位的值都可以把这个数整除,那也就是说这个数是它所有位数的公倍数,但是可能不是最小公倍数. ...

  5. XV6学习(14)Lab fs: File system

    代码在github上. 这次实验是要对文件系统修改,使其支持更大的文件以及符号链接,实验本身并不是很复杂.但文件系统可以说是XV6中最复杂的部分,整个文件系统包括了七层:文件描述符,路径名,目录,in ...

  6. CDN 概述

    占位 CDN(Content Delivery Network)内容发布网络 推荐Blog: CDN 学习笔记

  7. Springboot 基本认识

    不管是 spring cloud alibaba 还是 spring cloud netflix,都 是基于 springboot 这个微框架来构建的,所以我希望花一 点时间来讲一下 springbo ...

  8. Vue UI lib missing vue bug

    Vue UI lib missing vue bug Error Uncaught TypeError: Cannot read property 'prototype' of undefined a ...

  9. Nginx环境下,PHP下载,中文文件,下载失效(英文可以下载)怎么解决呢?

    参考出处: http://www.imooc.com/qadetail/76393 Nginx环境下,PHP下载,中文文件,下载失效(英文可以下载)怎么解决呢? 背景介绍: 文件名  为英文时可以下载 ...

  10. Sass && SCSS && Less

    1 1 1 Sass && SCSS && Less 在线SCSS编辑工具: http://www.sassmeister.com/ Sass v3.4.21 1 tu ...