4、面向对象
4.1、面向对象的概念
4.1.1、 面向过程
在早期出现的编程语言中,如大家都非常熟悉的C语言,当我们要用这种语言来定义一个复杂的数据类型等都是面向过程。
4.1.2、 面向对象
面向对象的3大特性:
封装 (Encapsulation)
继承 (Inheritance)
多态 (Polymorphism)
4.1.3、类与对象
1、类:类是对某一类事物的描述,是抽象的、概念上的定义
2、对象:对象是实际存在的该类事物的个体,因而也称实例(instance)
4.1.4、类的定义:
类可以将数据和函数封装在一起,其中数据表示类的属性,函数表示类的行为。定义类就是要定义类的属性与行为(方法)。如:
class Person{
int age;
void shout(){
System.out.println(“oh,my god! my age is “ + age);
}
}
4.1.5、 对象的产生和使用
要创建新的对象,需要使用new关键字和想要创建对象的类名,如:
Person p1 = new Person();
等号左边以类名Person做为变量类型定义了一个变量p1,来指向等号右边通过new关键字创建的一个Person类的 实例对象,变量p1就是对象的引用变量
变量在被初始化之前是不能使用的,一个方法内部的变量必须进行初始化赋值,否则编译无法通过 的情况。当一个 对象被创建时,会对其中各种类型的成员变量按图自动进行初始化赋值。
4.1.6、 对象的比较
有两种方式可用于对象间的比较,它们是“==”运算符与equals()方法,“==”操作符用于比较两个变量的值是否相等,equals()方法用于比较两个对象的内容是否一致。如:
class Compare{
public static void main(String[] args){
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
if(str1==str2){
System.out.println("str1==str2");
}else{
System.out.println("str1!=str2");
}
if(str1==str3){
System.out.println("str1==str3");
}else{
System.out.println("str1!=str3");
}
}
}
程序运行结果是:
str1!=str2
str1==str3
我们下面再来看看使用equals()方法的情况。
class Compare{
public static void main(String[] args){
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
if(str1.equals(str2)){
System.out.println("str1 equal str2");
}else{
System.out.println("str1 not equal str2");
}
if(str1.equals(str3)){
System.out.println("str1 equal str3");
}else{
System.out.println("str1 not equal str3");
}
}
}
程序运行结果是:
str1 equal str2
str1 equal str3