对象和类的概念
我们人认识世界,其实就是面向对象的。大家眼里都是一个个对象,要不怎么老说搞对象搞对象啊。比如现在让大家认识一下“天使”这个新事物,天使大家没见过吧,怎么样认识呢?最好的办法就是,给你们面前摆4个天使,带翅膀的美女,让大家看,看完以后,即使我不说,大家下一次是不是就都认识天使了。
但是,看完10个天使后,我们总要总结一下,什么样的东东才算天使?天使是无数的,总有没见过的!所以必须总结抽象,便于认识未知事物!总结的过程就是抽象的过程。
小时候,我们学自然数时怎么定义的?像1,2,3,4…这样的数就叫做自然数。 通过抽象,我们发现天使有这样一下特征:
1. 带翅膀(带翅膀不一定是天使,还可能是鸟人)
2. 女孩(天使掉下来脸着地,也是天使!)
3. 善良
4. 头上有光环
那么通过这4个具体的天使,我们进行抽象,抽象出了天使的特征,我们也可以归纳一个天使类。 通过这个过程,类就是对象的抽象。
类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象。我们要造一个汽车,怎么样造?类就是这个图纸,规定了汽车的详细信息,然后根据图纸将汽车造出来。
类:我们叫做class。
对象:我们叫做Object,instance(实例)。
以后我们说某个类的对象,某个类的实例。是一样的意思。
总结 1)对象:是具体的事物 2)类:是对对象的抽象;类可以看做创建对象的模板 3)类可以看成一类对象的模板,对象可以看成该类的一个具体实例。 4)类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的属性、方法。 |
类和对象初步
第一个类的定义
【示例1】类的定义方式
public class Car{ //每一个源文件必须有且只有一个public class,并且类名和文件名保持一致! } class Tyre { //一个java文件可以同时定义多个class } class Engine { } class Seat { } |
上面的类定义好后,没有任何的其他信息,就跟我们拿到一张张图纸,但是纸上没有任何信息,这是一个空类,没有任何实际意义。所以,我们需要定义类的具体信息。对于一个类来说,一般有三种常见的成员:属性field、方法method、构造器constructor。这三种成员都可以定义零个或多个。
【示例2】简单的学生类编写
public class SxtStu { //属性(成员变量) int id; String sname; int age; //方法 void study(){ System.out.println("我正在学习!"); } //构造方法 SxtStu(){ } } |
属性(field,或者叫成员变量)
属性用于定义该类或该类对象包含的数据或者说静态属性。属性作用范围是整个类体。
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
表1 成员变量的默认值 | |
数据类型 |
默认值 |
数值型 |
0 ,0.0 |
字符型 |
‘\u0000‘ |
布尔型 |
false |
所有引用类型 |
null |
属性定义格式:
[修饰符] 属性类型 属性名 = [默认值] ; |
方法
方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
方法定义格式:
[修饰符] 方法返回值类型 方法名(形参列表) { // n条语句 } |
一个典型类的定义和UML图
public class SxtStu { // field int id; String sname; int age; Computer comp; void study() { System.out.println("我正在学习!使用我们的电脑,"+comp.brand); } SxtStu() { } public static void main(String[] args) { SxtStu stu1 = new SxtStu(); stu1.sname = "张三"; Computer comp1 = new Computer(); comp1.brand = "联想"; stu1.comp = comp1; stu1.study(); } } class Computer { String brand; //品牌 } |
执行结果:
对应的UML图如下:
「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop