一、面向对象的概念和基础
1.面向对象和面向过程的联系
面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。早期先有面向过程思想,随着软件规模的扩大,问题复杂性的提高,面向过程的弊端越来越明显的显示出来,出现了面向对象思想并成为目前主流的方式。两者都贯穿于软件分析、设计和开发各个阶段,对应面向对象就分别称为面向对象分析、面向对象设计和面向对象编程。C语言是一种典型的面向过程语言,Java是一种典型的面向对象语言。
面向对象具有三大特征:封装性、继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能。所以面向对象优势更明显。
面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。我们不能把面向过程和面向对象对立起来,他们是相辅相成的,面向对象离不开面向过程。
注:
(1)都是解决问题的思维方式,都是代码组织的方式。
(2)解决简单问题可以使用面向过程
(3)解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。
2.类和对象的关系
(1)对象是具体的事物;类是对对象的抽象。
(2)类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
(3)类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。
3.类的定义
例:
public class student {
int id;
String name;
int age;
void study(){
System.out.println("好好学习,天天向上!");
}
student(){
}
}
注:每一个源文件只能有一个public class,并且类名和文件名保持一致!
4.属性(成员变量)
属性用于定义该类或该类对象包含的数据或者说静态特征。属性作用范围是整个类体。
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
二、方法
1.方法
方法用于定义该类或该类实例的行为特征和功能实现。方法是类和对象行为特征的抽象,类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
格式:
[修饰符] 方法返回值类型 方法名(形参列表) {
Java语句;
}
2.构造方法
定义:
类构造对象时调用的方法,是一种特殊的“成员方法”,用于对象的初始化,通俗易懂的来说就是为对象赋一个初始值。
构造方法分为无参构造方法、有参构造方法。
声明格式:
[修饰符] 类名 (形参) {
java语句;
}
例:
public point (int a,int b){
}
调用格式:
类名 对象 = new 类名(实参);
例:
point p = new point(3,4);
注:
(1)有返回值,但不能定义返回值类型。
(2)如果没有定义一个构造方法,则系统会自动定义一个没有参数的构造方法。
(3)构造方法的方法名一定要与类名一致。
(4)构造方法只能调用一次。
例:
public class point {
public point(){
System.out.println("开弓没有回头箭!");//无参的构造方法
}
public point(int_x,int y){
System.out.println("心中无敌,天下无敌!");//有参的构造方法
}
}
三、this关键字
定义:
this的本质就是创建好的对象的地址,由于在构造方法调用前,对象已经创建,所以在构造方法中也可以使用this代表当前对象。
this的种类:
(1)this.属性:指的是访问类中的成员变量,用来区分成员变量和局部变量,防止名字重复。
(2)this.方法名称:用来访问本类的成员方法。
(3)this();:用来访问本类的构造方法(“()”中可以有参数,如果有参数,则调用指定的有参构造)。
this的用法:
(1)在程序有二义性的地方,常用this来指明当前对象。普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。
(2)this()不能用于普通方法中,只能用在构造方法中,而且必须是构造方法中的第一条语句。
(3)this不能用于static方法中。
例:
public class User {
int id;
String name;
public User() {
}
public User(int id, String name) {
this.id = id;
this.name = name;
}
}