在早期出现的编程语言中,如大家都非常熟悉的C语言,当我们要用这种语言来定义一个复杂的数据类型等都是面向过程。
面向对象的3大特性:
封装 (Encapsulation)
继承 (Inheritance)
多态 (Polymorphism)
1、类:类是对某一类事物的描述,是抽象的、概念上的定义
2、对象:对象是实际存在的该类事物的个体,因而也称实例(instance)
类可以将数据和函数封装在一起,其中数据表示类的属性,函数表示类的行为。定义类就是要定义类的属性与行为(方法)。如:
class Person{ int age; void shout(){ System.out.println(“oh,my god! my age is “ + age); } }
要创建新的对象,需要使用new关键字和想要创建对象的类名,如:
Person p1 = new Person();
等号左边以类名Person做为变量类型定义了一个变量p1,来指向等号右边通过new关键字创建的一个Person类的 实例对象,变量p1就是对象的引用变量
变量在被初始化之前是不能使用的,一个方法内部的变量必须进行初始化赋值,否则编译无法通过 的情况。当一个 对象被创建时,会对其中各种类型的成员变量按图自动进行初始化赋值。
有两种方式可用于对象间的比较,它们是“==”运算符与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