基本定义:类是由属性和方法组成的。属性中定义类一个个具体信息,实际上一个属性就是一个变量;而方法是一些操作的行为,但是在程序设计中,定义类也要按照具体的语法要求完成
类的定义语法如下:
class 类名称{
数据类型 属性(变量) ;
...
public 返回值的数据类型 方法名称(参数1, 参数2...){
程序语句 ;
[return 表达式;
}
}
定义一个类:
class Book{
String title;
double price;
/**
* 输出对象完整信息
*/
public void getInfo(){ //此方法由对象调用,因此不需要添加关键词static
System.out.println("图书名称:" + title + "; 价格:" + price);
}
}
注:在主类中定义,并且由主方法直接调用的方法必须加上static
☆类定义完成后,需要依靠对象才能使用;对象的产生格式如下:
1.声明并实例化对象
类名称 对象名称 = new 类名称()
2.分步完成
声明对象: 类名称 对象名称 = null;
实例化对象: 对象名称 = new 类名称()
例.在主类中使用这个Book类
- 对象.属性:表示要操作类中的属性内容
- 对象.方法:表示要调用类中的方法
public class TestDemo{
public static void main(String args[]){
Book bk = new Book(); //声明并实例化对象
bk.title = "Java开发"; //操作属性内容
bk.price = 89.9; //操作属性内容
bk.getInfo(); //调用类中的getInfo()方法
}
}
class Book{
String title;
double price;
/**
* 输出对象完整信息
*/
public void getInfo(){ //此方法由对象调用,因此不需要添加关键词static
System.out.println("图书名称:" + title + "; 价格:" + price);
}
}
图书名称:Java开发; 价格:89.9
引用数据初步分析:一块堆内存空间(保存对象的属性信息)可以同时被多个栈内存共同指向,每一个栈内存都可以修改同一块内存空间的属性值
例.声明两个对象
public class TestDemo{
public static void main(String args[]){
Book bkA = new Book(); //声明并实例化对象
Book bkB = new Book();
bkA.title = "Java开发"; //操作属性内容
bkB.title = "JSP";
bkA.price = 89.9; //操作属性内容
bkB.price = 69.9;
bkA.getInfo(); //调用类中的getInfo()方法
bkB.getInfo();
}
}
class Book{
String title;
double price;
/**
* 输出对象完整信息
*/
public void getInfo(){ //此方法由对象调用,因此不需要添加关键词static
System.out.println("图书名称:" + title + "; 价格:" + price);
}
}
图书名称:Java开发; 价格:89.9
图书名称:JSP; 价格:69.9
例.对象引用传递
public class TestDemo{
public static void main(String args[]){
Book bkA = new Book(); //声明并实例化对象
Book bkB =null;
bkA.title = "Java开发"; //操作属性内容
bkA.price = 89.9; //操作属性内容
bkB = bkA;
bkB.price = 69.9;
bkA.getInfo(); //调用类中的getInfo()方法
}
}
class Book{
String title;
double price;
/**
* 输出对象完整信息
*/
public void getInfo(){ //此方法由对象调用,因此不需要添加关键词static
System.out.println("图书名称:" + title + "; 价格:" + price);
}
}
图书名称:Java开发; 价格:69.9
上述实例中,先实例化一个bkA对象,然后利用bkB = bkA,将bkB的内存指向bkA的内存空间(引用传递),因此当bkB修改属性内容时,会直接影响bkA对象的内容