目录活动地址:CSDN21天学习挑战赛
- Java——类和对象
- 类
- 类声明
- 成员变量
- 成员方法
- 对象
- 创建对象
- 虚拟机内存调用图解
类是Java中的一种重要的引用数据类型,是组成Java程序的基本要素。它封装了一类对象的数据和操作。
类实际上在现实世界中是不存在的,是一个抽象的概念、模板,是人类大脑进行”思考、总结、抽象“的一个结果。
类本质上是现实世界中某些事物具有共同特征,将这些共同特征提取出来形成的一个概念就是一个”类“,就是一个模板。
类声明Java语言中一个类的实现包括:类声明和类体。类声明语法格式如下
[public][abstract|final] class className [extends superclassName] [implements interfaceNameList] { //类体 }
其中,class是声明类的关键字,className是自定义的类名;class前面的修饰符public、abstract、final用来声明类,它们可以省略,它们的具体用法后面章节会详细介绍;superclassName为父类名,可以省略,如果省略则该类继承Object类,Object类所有类的根类,所有类都直接或间接继承Object;interfaceNameList是该类实现的接口列表,可以省略,接口列表中的多个接口之间用逗号分隔。
在语法说明中,括号([])部分表示可以省略;竖线(|) 表示“或关系”,例如abstract|final,说明可以使用abstract或final关键字,两个关键字不能同时出现。
成员变量class className { [public | protected | private ] [static] [final] type variableName; //成员变量 }
其中type是成员变量数据类型,variableName是成员变量名。type前的关键字都是成员变量修饰符,它们说明如下:
-
public、protected和private修饰符用于封装成员变量。
-
static修饰符用于声明静态变量,所以静态变量也称为“类变量”。
-
final修饰符用于声明变量,该变量不能被修改。
下面看一个声明成员变量示例:
// Animal.java public class Animal extends Object { //动物年龄 int age = 1; //动物性别 public boolean sex = false; //动物体重 private double weight = 0.0; }成员方法
声明类体中成员方法语法格式如下:
class className { [public | protected | private ] [static] [final | abstract] [native] [synchronized] type methodName([paramList]) [throws exceptionList] { //方法体 } }
其中type是方法返回值数据类型,methodName是方法名。type前的关键字都是方法修饰符,它们说明如下:
-
public、protected和private修饰符用于封装方法。
-
static修饰符用于声明静态方法,所以静态方法也称为“类方法”。
-
final | abstract不能同时修饰方法,final修饰的方法不能在子类中被覆盖;abstract用来修饰抽象方法,抽象方法必须在子类中被实现。
-
native修饰的方法,称为“本地方法”,本地方法调用平台本地代码(如:C或C++编写的代码),不能实现跨平台。
-
synchronized修饰的方法是同步的,当多线程方 式同步方法时,只能串行地执行,保证是线程安全的。
方法声明中还有([paramList])部分,它是方法的参数列表。throws exceptionList是声明抛出异常列表。
下面看一个声明方法示例:
public class Animal { // extends Object { //动物年龄 int age = 1; //动物性别 public boolean sex = false; //动物体重 private double weight = 0.0; public void eat() { // 方法体 return; } int run() { // 方法体 return 10; } protected int getMaxNumber(int number1, int number2) { // 方法体 if (number1 > number2) { return number1; } return number2; } }对象
对象-----(抽象)----->类
类-----(实例化)----->对象(也叫做实例)
类实例化可生成对象,实例方法就是对象方法,实例变量就是对象属性。一个对象的生命周期包括三个阶段:创建、使用和销毁。
创建对象创建对象包括两个步骤:声明和实例化。
声明
声明对象与声明普通变量没有区别,语法格式如下:
type objectName;
其中type是引用类型,即类、接口和数组。示例代码如下:
String name;
该语句声明了字符串类型对象name。可以声明并不为对象分配内存空间,而只是分配一个引用。
实例化
实例化过程分为两个阶段:为对象分配内存空间和初始化对象,首先使用new运算符为对象分配内存空间,然后再调用构造方法初始化对 象。示例代码如下:
String name; name = new String("Hello World");
一个引用变量没有通过new分配内存空间,这个对象就是空对象,Java使用关键字null表示空对象。
示例代码如下:
String name = null; name = "Hello World";
引用变量默认值是null。当试图调用一个空对象的实例变量或实例方法时,会抛出空指针异常NullPointerException,如下代码所示:
String name = null; //输出null字符串 System.out.println(name); //调用length()方法 int len = name.length();
产生空对象有两种可能性:第一是程序员自己忘记了实例化,第二是空对象是别人传递过来的。
Student类
package com.shouyerenst.OOP; public class Student { //属性(描述状态),在Java程序中以”成员变量“的方式存在 //学号 int no; //这些成员变量又称为实例变量 //姓名 String name; //年龄 int age; //性别 boolean sex; //住址 String addr; public Student(int no, String name, int age, boolean sex, String addr) { this.no = no; this.name = name; this.age = age; this.sex = sex; this.addr = addr; } }
StudentTest类
package com.shouyerenst.OOP; public class StudentTest { public static void main(String[] args) { //s1是局部变量,也叫做引用 Student s1 = new Student(10001,"李华",19,true,"北京"); System.out.println(s1.no); System.out.println(s1.name); System.out.println(s1.age); System.out.println(s1.sex); System.out.println(s1.addr); System.out.println("----------------------"); Student s2 = new Student(10002,"王雪",17,false,"成都"); System.out.println(s2.no); System.out.println(s2.name); System.out.println(s2.age); System.out.println(s2.sex); System.out.println(s2.addr); } }虚拟机内存调用图解