一、描述

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

二、类与对象的关系

  • 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是对对象的抽象
  • 从代码运行角度考虑是先有类后有对象,类是对象的模板。
  • 例如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语句 */
}

对象调用的格式:

  • 对象或对象的引用.方法名(参数列表)

最新文章

  1. Javascript for循环指定锚点跳转
  2. 查询java 类加载的路径
  3. extjs中的下载并对文件重命名功能的实现
  4. dede调用文章里的图片
  5. node操作mysql数据库
  6. oc学习笔记2
  7. document.documentElement 和document.body 以及其属性
  8. Python3处理HTML获取所需内容
  9. 【原创】算法基础之Anaconda(1)简介、安装、使用
  10. Particle Filters
  11. Hashtable与Dictionary比较
  12. Ubuntu16.04 本地提权漏洞复测过程
  13. VDMA时序分析
  14. 架构探险笔记12-安全控制框架Shiro
  15. mvc 在view视图中直接输出rdlc报表文件(Excel、PDF、Word)
  16. Error:Makefile:452: target 'config' given more than once in the same rule
  17. 分布式系统唯一ID生成方案汇总 转
  18. luogu4473 BZOJ2143 2011[国家集训队]飞飞侠
  19. POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)
  20. word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method

热门文章

  1. 腾讯云TcaplusDB获新加坡MTCS最高等级安全认证
  2. 漫画 | CPU战争40年,真正的王者终于现身!
  3. hdu 6268 Master of Subgraph(点分治+bitset)
  4. 2015ACM/ICPC亚洲区沈阳站-重现赛 B - Bazinga (KMP)
  5. Codeforces Round #515 (Div. 3) C. Books Queries (模拟)
  6. 三、Python基本数据类型
  7. C#枚举(一)使用总结以及扩展类分享
  8. 交换机上禁止某个MAC地址通信
  9. 011.NET5_MVC解读Razor混编
  10. js uppercase first letter