JAVA是面向对象的编程设计语言。
何为“面向对象”呢,那就先了解什么是“类”和“对象”?
1、什么是类和对象
类(class),即具有相同或相似特征的某一类事物的统称。如人类,即“人”这一类事物,其所拥有共同的特征,如人都有发达的大脑、都直立行走、会思考、会劳动,所以才称为“人类”。
对象(object),类中某一特定的成员。如张三、李四,他们拥有人类所有的共同特征,同时还拥有个体特有的特征,如年龄、身高、姓名。
类是对象的抽象和概括;对象是类的实例化,是一个个具体的个体,一切事物皆对象。
2、类的属性和方法
类所具有的状态特征,在JAVA中称为成员变量/属性(attribute),如上所述,人类有发达的大脑。
类所具有的行为动作,在JAVA中称为成员函数/方法(method),如上所述,人类直立行走、会思考、会劳动。
类中的成员,包括成员属性和成员方法,如类中有3个属性,2个方法,则该类中共有5个成员。
3、类的定义
类就像人类的模板,对象就是使用模板创建出来的个体,所以必须先创建类之后才有对象。
类有属性和方法,
类的属性,即类所具备的特征,如人类的属性是有姓名、身高等
类的方法,也称为类的函数,即类所具备的行为,如人类的方法是会说话、会劳动、会直立行走
JAV创建类的格式如下:
public class Test { public String testOne;//创建属性 public void testTwo() { }//创建方法 }
其中,类的关键字class必填,修饰符、成员属性和成员方法及属性方法的名称等,均可变。
以下实例,创建一个Person类,
类源文件名必须为Person.java:
//定义一个名为Person的类 public class Person { //类有三个属性,分别是name、age、job String name; int age; String job; //创建方法 void say() { System.out.println("姓名:"+name+" 年龄:"+age+" 职业:"+job); } }
注:
如果class类名前加了修饰的public,则这个class类的源文件命名必须和类名相同,如public class Person,则类源文件名必须为Person.java
4、创建对象
类创建完成后,就可以根据该类来创建对象,又叫类的实例化。
在JAVA中,创建类的操作,是通过new操作符来完成的。
方法一:
类名 对象名=new 类名();
方法二:
类名 对象名;
对象名=new 类名();
public class MyTest { public static void main(String[] args) { Person zhangsan=new Person();//实例化一人对象,名为zhangsan zhangsan.say();//给zhangsan引用类的方法 } }
输出结果:
姓名:null
年龄:0
职业:null
只要new完成实例创建后,就是在堆内存中产生了一个实体。对象的名称,如以上实例中的zhangsan,就是一个类类型的引用变量,它存在于栈内存中,指向堆中的这个实例。
JAVA中,堆内存中的变量都有默认初始化值。成员属性均未赋值,均取初始化默认值。
如果创建类,初始化时,堆内存变量已附值了,这个值称为“显式初始化值”。
创建对象,并指挥该对象做事情,在java中的方式是“对象.对象成员”。
public class MyTest { public static void main(String[] args) { Person zhangsan=new Person();//实例化一人对象,名为zhnagsan zhangsan.name="张三"; zhangsan.age=20; zhangsan.job="公务员"; zhangsan.say();//给zhangsan引用类的方法 } }
输出结果:
姓名:张三
年龄:20
职业:公务员
注:在一个JAVA类源文件中,只能有一个public类。
所以,如果类和主函数一起写在同一源文件中时,同时主函数所在类有public修饰,新创建的person类前不能有public;
存在有public修饰的类时,源文件名也必须与该类名完全一致,如public class MyTest,源文件名必须为MyTest.java
如下:
public class MyTest { public static void main(String[] args) { Person1 zhangsan=new Person1();//实例化一人对象,名为zhnagsan zhangsan.name="张三"; zhangsan.age=40; zhangsan.job="公务员"; zhangsan.say();//给zhangsan引用类的方法 } } //与主函数一起,在同一源文件中创建类,类前不能有public class Person1 { //类有三个属性,分别是name、age、job String name; int age; String job; //创建方法 void say() { System.out.println("姓名:"+name+" 年龄:"+age+" 职业:"+job); } }
输出结果:姓名:张三 年龄:40 职业:公务员
4、类名和对象名的命令规范
类名:XxxXxx,第一个单词开始,首字母大写,如MyClass、ClassTest
变量名、方法名:xxXxx,即第一个单词小写,第二个单词开始首字母大写,如myAge、myJob
注:这是一种规范,不是规则,不强制规定必须这么写。