Java语言的基本元素:类和对象
引入
人认识世界,其实就是面向对象的。比如,我们认识一下美人鱼(都没见过)
经过“仔细学习”,发现美人鱼通常具备一些特征:
- 女孩
- 有鱼尾
- 美丽
这个总结的过程,其实是抽象化的过程。抽象出来的美人鱼的特征,可以归纳为一个美人鱼类。而图片中的都是这个类呈现出来的具体的对象。
类和对象概述
类(Class)和对象(Object)是面向对象的核心概念。
1、什么是类
类:具有相同特征的事物的抽象描述,是抽象的、概念上的定义。
2、什么是对象
对象:实际存在的该类事物的每个个体,是具体的,因而也称为实例(instance)。
可以理解为:类 => 抽象概念的人;对象 => 实实在在的某个人
3、类与对象的关系错误理解
曰:“白马非马,可乎?”
曰:“可。”
曰:“何哉?”
曰:“马者,所以命形也。白者,所以命色也。命色者,非命形也,故曰白马非马。”
类的成员概述
面向对象程序设计的重点是类的设计。类的设计,其实就是类的成员的设计;现实世界的生物体,大到鲸鱼,小到蚂蚁,都是由最基本的细胞构成的。同理,Java代码世界是由诸多个不同功能的类构成的。
现实生物世界中的细胞又是由什么构成的呢?细胞核、细胞质、…
Java中用类class来描述事物也是如此。类,是一组相关属性和行为的集合,这也是类最基本的两个成员。
属性:该类事物的状态信息。对应类中的成员变量
- 成员变量 <=> 属性 <=> Field
行为:该类事物要做什么操作,或者基于事物的状态能做什么。对应类中的成员方法
- (成员)方法 <=> 函数 <=> Method
举例
面向对象完成功能的三步骤
步骤1:类的定义
类的定义使用关键字:class。格式如下:
[修饰符] class 类名{ 属性声明; 方法声明; }
举例1
public class Person{ //声明属性age int age ; //声明方法showAge() public void eat() { System.out.println("人吃饭"); } }
举例2
public class Dog{ //声明属性 String type; //种类 String nickName; //昵称 String hostName; //主人名称 //声明方法 public void eat(){ //吃东西 System.out.println("狗狗进食"); } } public class Person{ String name; char gender; Dog dog; //喂宠物 public void feed(){ dog.eat(); } }
步骤2:对象的创建
创建对象,使用关键字:new
创建对象语法:
//方式1:给创建的对象命名 //把创建的对象用一个引用数据类型的变量保存起来,这样就可以反复使用这个对象了 类名 对象名 = new 类名(); //方式2:new 类名()//也称为匿名对象 举例: class PersonTest{ public static void main(String[] args){ //创建Person类的对象 Person per = new Person(); //创建Dog类的对象 Dog dog = new Dog(); } }
步骤3:对象调用属性或方法
对象是类的一个实例,必然具备该类事物的属性和行为(即方法)。
使用"对象名.属性" 或 "对象名.方法"的方式访问对象成员(包括属性和方法)
举例1:
//声明Animal类 public class Animal { //动物类 public int legs; public void eat() { System.out.println("Eating."); } public void move() { System.out.println("Move."); } } //声明测试类 public class AnimalTest { public static void main(String args[]) { //创建对象 Animal xb = new Animal(); xb.legs = 4;//访问属性 System.out.println(xb.legs); xb.eat();//访问方法 xb.move();//访问方法 } }
图示理解
举例2:针对前面步骤1的举例2:类的实例化(创建类的对象)
public class Game{ public static void main(String[] args){ Person p = new Person(); //通过Person对象调用属性 p.name = "康师傅"; p.gender = '男'; p.dog = new Dog(); //给Person对象的dog属性赋值 //给Person对象的dog属性的type、nickname属性赋值 p.dog.type = "柯基犬"; p.dog.nickName = "小白"; //通过Person对象调用方法 p.feed(); } }