在Java中,可以说在面向对象编程中,每个对象都有自己的行为和属性,而类就是把具有相同行为和属性的对象抽象在一起进行描述,而类的实例化就是具有相同行为和属性的对象。
1、面向对象基础
1.1 面向对象程序设计入门分析如下:
1.2 抽象
Java中的抽象其实不抽象,而是我们生活中的具体事物在程序中的实现。要在程序中模拟现实事物就要用到我们这章讲到的类。
1.3 封装
封装就是把不必要向用户展示的信息隐藏起来,可以通过抽象数据类型把数据和相关操作封装在一起打包。就是把一个对象的行为和属性结合成在一起而尽可能的隐藏该对象的内部细节,给用户只提供一个外部接口即可。这样做有两个好处:
l 方便用户使用,用户只需要知道这个类怎样用即可,而无需关心这个类是怎样形成的。
l 提高了系统的安全性,这样做用户就无法修改系统属性,所以就减少了系统风险。
2、类
在Java中,可以说在面向对象编程中,每个对象都有自己的行为和属性,而类就是把具有相同行为和属性的对象抽象在一起进行描述,而类的实例化就是具有相同行为和属性的对象。说了这么多,有的人可能晕了,给大家具体地再来解释一下类和对象。比如,现实中动物就是一个类,而里面的狗、猫、兔子等都是对象,它们有各自的行为,如狗能看门、猫能捉老鼠,兔子能吃草等。并且它们也有各自的属性,属性就是它们的特征,如它们毛的颜色和长短,耳朵大小,眼睛大小等都是的。
类的基本定义方法如下:
[修饰符] class 类名 [extends 父类] [implements 接口名]{
类成员变量(属性)声明
类方法(行为)声明
}
2.1 类头
(1)类的修饰符。
(2)class关键字用来定义一个新的类。
(3)extends关键字用来说明当前这个类是哪个父类的子类,也就是说从哪里继承来的。
(4)implements关键字用来说明当前这个类中实现了哪个接口定义的功能和方法。
2.2类体
(1)类的属性。Java类中的成员变量可分为简单成员变量和对象成员变量。
Java中声明类属性为简单变量的语法如下:
[修饰符] 变量类型 变量名[=变量初值]
Java中声明类属性为对象成员变量的语法如下:
[修饰符] 类名 对象名[=new类名(实际参数列表)];
(2)类的方法。
Java中方法的声明格式如下:
[方法修饰符] 返回值类型 方法名(参数表){方法体}
2.3 创建对象
我们定义类的目的就是用这个类,而对象就是来实现这个类的。在Java程序中,当我们创建一个新的对象时,系统就会自动在内存中为这个类分配一块空间,用来保存此对象的行为和属性。系统每隔一段时间就会自动扫描内存,看里面是否有要撤销的垃圾,如果此刻某对象使用完毕,系统就会将其自动回收。
在Java语言中用new关键字来创建对象,其语法格式为:
类名 对象名=new 类名([参数表]);
或者:
类名 对象名;
对象名=new 类名([参数表]);
当一个对象被创建了以后就相当于一个人的诞生,他现在已经具备了自己的行为和特征,我们就可以借助他来帮我们做事等。
2.4 面向对象举例:显示个人信息
public class Person {
int id;
int age = 20;
void Person(int id , int age) {
id = _id;
age = _age;
System.out.println("id = " + id + "\nage =" + age);
}
public static void main(String[] args) {
Person tom = new Person();
tom.Person(1, 25);
}
}
运行结果:
id = 1
age =25
2.5 构造函数
2.5.1构造函数的一般概念
构造函数就是方法,它主要起到初始化对象的作用,其相关特征如下:
l 创建构造函数时期方法名要和类名一致。
l 构造函数不能由编程人员直接调用。
l 在创建一个对象时,系统会自动调用该类的构造函数来初始化对象。
l 构造函数没有返回类型。
2.5.2创建自己的构造函数
首先分析在Employee类中的构造函数:
public Employee(String n, double s, int year, int month, int day){
name=n; salary=s;
regorianCalendar calendar=
new GregorianCalendar(year, month-l, day);
hireDay=calendar.getTime();
}
构造函数和其它方法最大的不同点在于其只能和new运算符一起使用,而不能将其用在一个已经存在的对象来重新设置其实例字段,否则在编译时会出现错误。下面介绍一下构造函数的基本特征:
l 构造函数要和其相对应的类名字一样。
l 一个类可以有多个构造函数,并且这多个构造函数的函数名可以相同,但其行为和特征必须不相同。
l 构造函数可以没有参数,或者可以有1个到多个参数。
l 构造函数没有返回值。
l 构造函数总是和new运算符一起被调用。
2.5.3构造方法注意事项
l 子类的构造过程中必须调用基类的构造函数。
l 子类可在自己的构造方法中使用super来调用基类的构造方法。
l 如果子类构造方法中没有显示的调用基类构造方法则系统默认调用基类无参的构造方法。
l 如果子类构造方法没有显性地调用基类构造方法,并且基类中也没有无参数的构造方法,则编译出错。
2.5.4构造函数的作用
l 可以初始化对象。在调用构造函数之前,系统已初始化该对象。
l 如果编程人员没有定义该类的构造函数,系统会自动创建构造函数,但该构造函数没有任何参数,并且也没有行为定义。
l 使灵活度大大增加。因为以小写字母开头的编码规则并不适用于构造函数,这是因为构造函数的命名必须和类名一致。