Java——类和对象
活动地址:CSDN21天学习挑战赛
类
类是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);
}
}
虚拟机内存调用图解
感觉不错的话,动手点个赞吧!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/125495.html