快速入门 - Java 对象和类
所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。
类是具备某些共同特征的实体的集合,它是一种抽象的概念,用程序设计的语言来说,类是一种抽象的数据类型,它是对所具有相同特征实体的抽象。
类与对象时整个面向对象中最基础的组成单元。
类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);
对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。
可以一句话来总结出类和对象的区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。
类与对象的关系:
类是对象的集合,对象是类的实例;对象是通过new className产生的,用来调用类的方法;类的构造方法。
在面向对象定义之中,也规定了一些基本的特征:
封装:保护内部的操作不被破坏;
继承:在原本的基础之上继续进行扩充;
多态:在一个指定的范围之内进行概念的转换。
对于面向对象的开发来讲也分为三个过程:OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)。
源文件声明规则
当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意规则:一个源文件中只能有一个public类,一个源文件可以有多个非public类,源文件的名称应该和public类的类名保持一致。
例如:源文件中public类的类名是Test,那么源文件应该命名为Test.java,如果一个类定义在某个包中,那么package语句应该在源文件的首行。如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
构造方法
每个类都有构造方法。如果没有显式的为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:
public class Person{
public Person(){
}
public Person(String name){
// 这个构造器仅有一个参数:name
}
}
类、对象定义和使用
Java包
包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。
Import语句
在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。
在Java中定义类,使用关键字class完成,语法如下:
class 类名称 {
属性 (变量) ;
行为 (方法) ;
}
范例:定义一个Person类,具体代码如下:
class Person { // 类名称首字母大写
String name ;
int age ;
public void tell() {// 没有static
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}
类定义完成之后,是无法直接使用。如果要使用,必须依靠对象,那么由于类属于引用数据类型,所以对象的产生格式(两种格式)如下:
- 格式一:声明并实例化对象
类名称 对象名称 = new 类名称();
- 格式二:先声明对象,然后实例化对象
类名称 对象名称 = null ;
对象名称 = new 类名称 () ;
引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间。
当一个实例化对象产生之后,可以按照如下的方式进行类的操作
对象.属性:表示调用类之中的属性;
对象.方法():表示调用类之中的方法。
一个简单的例子
使用对象操作类,具体实例
package com.yoodb.blog;
class Person {
String name ;
int age ;
public void get() {
System.out.println("姓名:" + name + ",年龄:" + age);
}
}
public class TestDemo {
public static void main(String args[]) {
Person per = new Person() ;// 声明并实例化对象
per.name = "张三" ;//操作属性内容
per.age = 30 ;//操作属性内容
per.get();//调用类中的get()方法
}
}