JAVA 类与对象
学习目的
1、清楚类与对象之间的关系
2、熟悉类的组成,掌握类的声明
3、理解构造方法的作用,并掌握构造方法的意义
4、掌握重载方法的创建和调用
5、熟悉成员变量、局部变量的异同点
6、熟悉使用访问器和设置器实现信息隐藏和封装
7、熟悉一般方法、构造方法的重载
8、能够正确区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用。
9、掌握对象的创建、引用和使用及向方法传递参数的方式
10、掌握this关键字的使用以及对象数组的创建和访问
11、理解包的作用,熟悉Java包在文件中的表示形式
12、掌握Java包的创建、包成员的各种访问方式
类与对象的关系
简单来说类是对具有相同属性与行为对象的抽象,假设我们需要对一个员工进行抽象,我们可以构建一个Employee(员工)类。
类的组成,类的声明
定义类包括类的声明与类体内容两个方面,其中较为重要的类体又包括两个方面,声明变量、定义方法。其中声明变量主要参考对象具有的属性,而定义方法参考对象的行为。也就是说对象的属性在类中被具体为变量,而对象的行为被具体为方法。类的声明需要指定类名并使用关键字class、访问修饰符和类型修饰符。访问修饰符顾名思义是指定其他对该类的访问权限,包括public与默认(缺省) 两种。对于变量和方法的声明也包括访问修饰符public、protected、privatte 对于这些关键词具体内容后文详细描述。下面给出一个Employee类的简单代码框架
public class Employee{ String name;//声明变量:姓名(缺省)与薪资(私有) private double salary; void speak()//方法:说话{ System.out.println("My name is:"+name); System.out.println("My salary is:"+salary); } public static void main(String[] args){ } }
静态变量与实例变量
Java为强类型语言,这意味着在每个变量使用之前都必须声明,声明时包括访问修饰符、类型修饰符 区分静态变量与实例变量的一个标志就是查看类型修饰符,其中用static 来修饰的为类变量或者说时静态变量,而没有用static修饰则为实例变量。二者的区别就是静态变量在内存中唯一存在,而实例变量在每个对象被创建时分配不同的内存。
静态方法与实例方法
对应的static修饰方法时该方法称为静态方法,其用来操作静态变量。无修饰则为实例方法,用于操作实例变量。
变量的生命周期、成员变量与局部变量
在类体中方法之外声明的变量称为成员变量,在类体某个方法内部或者参数列表中声明的变量称为局部变量。成员变量在整个类中都有效,而局部变量只在声明它的方法中有效。如果方法中变量名与成员变量名相同,成员变量会被隐藏关键词 this 来访问成员变量。
this关键字
this关键字表示对当前对象的引用,可以出现在类的实例方法和构造方法中。当成员变量和局部变量重名时必须使用this来引用成员变量。
访问器与设置器
在类方法中一般都会有访问器与设置器。访问器的作用是得到该对象的一些信息,而设置器作用是给与对象一些信息。同样用员工类来说明,我们想知道一个员工的名字或者薪资,我们可以写一个返回值为名字、薪资的方法。又或者想要改变一个员工的名字那就写一个设置员工的方法。
public double getSalary(){ return salary; } public String getName() { return this.name; } public void setSalary(double salary) { this.salary=salary; }
构造方法
构造方法是一种特殊的方法,它的名字与类名完全相同,且无返回值。构造方法的主要作用是初始化新创建的对象。Java类中至少有一个构造方法、如果定义类时没有显示定义构造方法,系统就会自动提供一个缺省构造方法。同样用Employee类说明
public Employee(String name,double salary){ this.name=name;//this可以指向当前对象 this.salary=salary; }
方法重载
再Java种,方法的标识是由方法名与参数类型来表示的。所以可以在一个类中定义多个方法名相同但参数列表不同的方法。例如
void add(int a,int b); void add(int a,int b,int c); void add(double a,int b);
这样的命名都是合理的,在调用重载方法时JVM虚拟机将会根据当前方法调用的参数在类中匹配参数形式一致的方法。
对象实例化
对象时类的具体实例,需要通过类来创建,创建对象的过程称为实例化,实例化包括两个步骤,一是使用new操作符作为对象的各个实例变量分配内存并赋予初始值,二是使用构造方法对对象的各个实例变量赋值,并返回一个引用给声明的对象变量。分配给对象的内存称为对象实体。保存在堆内存中。而声明对象的变量被保存在栈内存中。
对象数组
对象数组是多个对象的集合,就如数与数组关系一般,定义方式与单个对象实例化相似
实参与形参
与C语言类似,在方法传参时分为传值与引用。按值传递,方法体中的代码不会对原本的参数有所影响,而按引用传参则会改变原始的数据。
包
包是Java提供的一种资源管理机制。使用package关键字来创建包。想让某个包中的类被其他的类访问,应将这个类设为public,同时还要使用以下三种方式中的一种在包外访问该public类;通过包名限定的类全名来访问该类,通过import语句导入该类和通过import语句来导入该类所属的整个包。如果在一个程序中存在使用两个不相关的同名类时,不能使用导入类的方式,此时需要使用类全名来访问类。