类的包含
1.成员变量(属性):修饰符 数据类型 变量名;
在Java语言中对象的属性称为成员变量,也可以成为属性。为了了解成员变量,首先定义一个图书类,成员变量对应于类对象的属性,在Book类中设置id、name和cate3个成员变量,分别对应于图书编号、图书名称和图书类别这3个图书属性。
//属性 成员变量 //书名 String name; //类别 String category; //内容 String content="其他类别";//不是null
2.成员方法(函数)
在Java语言中使用成员方法对应于类对象的行为。一个成员方法可以有参数,这个参数可以使对象也可以是基本数据类型的变量,同时成员方法有返回值和不返回任何值的选择,如果方法需要返回值可以在方法体中使用return关键字,使用这个关键字后,方法的执行将被终止。
Java语言中的成员方法无返回值可以使用void关键字表示。
成员方法的返回值可以使计算结果也可以是其他想要的数值、对象,返回值类型要与方法返回的值类型一致。
在成员方法只能够可以调用其他成员方法和类成员变量,同时在成员方法中可以定义一个变量,这个变量为局部变量。
如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量进行访问。
(1)没有返回值(void),没有传入参数()
(2)没有返回值,有参数(数据类型 参数名)
(3)有返回值(),没有传入参数():返回值类型 方法名 () {return返回的数据;}
(4)有返回值,有传入参数:返回值类型 方法名 (传入数据类型 参数名) {return返回的数据;}
//成员方法 //形式之一:没有返回值,没有传入参数 void print() { System.out.println("我要打印的这本书的书名叫做《"+name+"》"); System.out.println("我读的书的内容"+content); } //形式之二:没有返回值,有传入参数 void write(String mycontent) { System.out.println("我写的内容:"+mycontent); if(content.length()>=1000) { return; } content+=mycontent; System.out.println("我写完之后的内容:"+content); } //形式之三:有返回值,没有传入参数、 String read() { //返回值 return content; //System.out.println("sdsd"); } //形式之四:有返回值,有参数 //卖书 //根据卖书的数量计算也并返回钱数 double sell(int count) { return(price*count); }
3.构造方法(构造函数)
构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,每当类实例化一个对象时,类都会自动调用构造方法。
构造方法没有返回值。
构造方法的名称要与本类的名称相同。
注意:在定义构造方法时,构造方法没有返回值,但这与普通没有返回值的方法不同,普通没有返回值的方法使用public void methodEx()这种形式进行定义,但构造方法并不需要void关键字进行修饰。
格式如下:
public book(){
//构造方法体
}
public:构造方法修饰符
book:构造方法的名称
在构造方法中可以为成员变量赋值,这样当实例化一个本类的对象时,相应的成员变量也将被初始化。
注意:如果在类中定义的构造方法都不是无参的构造方法,则编译器不会为类设置一个默认的无参构造方法,当试图调用无参构造方法实例化一个对象时,编译器会报错。所以只有在类中没有定义任何构造方法时,编译器才会在该类中自动创建一个不带参数的构造方法。
只可以在无参构造方法中的第一句使用this关键字调用有参构造的方法。
(1)方法名和类名一样
(2)没有返回值,并且不用void
(3)如果没有自定义,就自动提供一个默认构造方法(无参数的构造方法)
(4)主要作用就是初始化对象
(5)只在构造对象的时候调用
//构造方法 //1.方法名和类名一样 //2.没有返回值,不需要加void //3.只要自定义了构造方法,就不会自动添加默认的构造方法 Book() { //完成初始化 name="默认书名"; } Book(String bookname) { //初始化 name=bookname; } Book(String bookname,String category) { //初始化 name=bookname; //this代表类本身 this.category=category; }
类的定义方式
1.class
修饰符 class 类名 {构造方法;成员变量;成员方法;}
2.package(包)
(1)定义在第一行
(2)一般全小写
(3)范围从大到小
(4)对应目录结构
例题
1 package org.hanqi.pn0120; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 7 8 //构造一本书 9 10 Book myBook=new Book("JAVA基础教程","JAVA教程类");//默认构造方法 11 12 //myBook.name="JAVA基础教程"; 13 14 System.out.println("类别"+myBook.category); 15 16 myBook.category="教程类"; 17 18 myBook.content="第一章"; 19 20 String str=myBook.read(); 21 22 System.out.println("读出的内容="+str); 23 24 myBook.write("JAVA的发展史"); 25 26 str=myBook.read(); 27 28 System.out.println("读出的内容="+str); 29 30 int c=3; 31 32 System.out.println("卖"+c+"本书的钱数="+myBook.sell(c)); 33 34 myBook.print(); 35 36 System.out.println(); 37 38 //第二本书 39 Book myBook1=new Book("战争与和平"); 40 41 //myBook1.name="战争与和平"; 42 43 //myBook1.category="名著类"; 44 45 System.out.println("类别="+myBook.category); 46 47 myBook1.read(); 48 myBook1.print(); 49 50 } 51 52 }