java的类class 和对象object

java 语言的源代码是以类为单位存放在文件中,已public修饰的类名须和存放这个类的源文件名一样。而

一个源文件中只能有一个public的类,类名的首字母通常为大写。

使用public修饰的类可以被外部程序使用,而不使用public修饰的类则不能被外部程序使用。

类中定义的变量,可以称为类的‘’属性property‘’,或‘’成员变量member variable'。

通过类可以自定义新的变量类型。这种新的自定义类型与数组类似,只是其成员的类型可以是各种不同的

基本或非基本类型,而不必像数组所有成员的类型都一致。

例如定义新类型book。

public class Book {

String bookName ;//书名

String firstAuthor;//书的第一作者

String authors;//书的其他作者

int bookNumber;//书的页数

int bookSize;//书是多大的,例如32开,16开等

String language;//书的语言

}

定义完了就可以在其他的程序中使用Book这种类型。

可先声明一个Book变量:Book math1;  再创建一个Book对象赋值给Book变量:math1=new Book()。

然后就可以使用math1这个Book变量了:math1.bookName="飞屋环球记";math1.bookNumber=56;

 

对于在另一个类中调用Book类时,默认情况下,类和类中使用的其他类的源文件要放在同一个目录下。若在其他文件夹中

也可在代码中注明路径。

java编译器会在找不到     .class文件但可以找到源文件的情况下,会自动对源文件(.java文件)进行编译并使用

产生出来的.class文件。

 

引用外部的类,创建类对象object赋值给一个已声名的引用reference,reference只是指向某个具体的object

的索引而已。所以一个object可以有多个reference,reference的性质同数组名,object的性质同数组元素。

如下创建的类BookShelf中science1和position都是引用,java会为每一个创建的对象赋初值。

package BookShelf;

 

import Book.Book;

 

public class BookShelf {

Book science1;

String position;

int floors;

}

当创建一个BookShelf对象时,引用的初始值为null,整型默认值为0.

public class library1 {

 public static void main(String[] args){

  BookShelf geography;

  geography = new BookShelf();

  System.out.println(geography.science1);

  System.out.println(geography.position);

  System.out.println(geography.floors);

 }

上述输出结果为:

null

null

0

当引用的值为null时,表示该引用目前不指向任何的对象,当使用值为null的引用时,就是在访问一个不存在

的东西,这时会出现错误.

定义类时,可以为其赋初值

public class BookShelf {

Book science1=new Book();

String position="block 2";

int floors=4;

}

如上对BookShelf的属性science1、position、floors都进行了赋初值,这样在其他程序里定义BoolShelf对象时

其各属性的初始值如下:

public static void main(String[] args){

  BookShelf geography;

  geography = new BookShelf();

  System.out.println(geography.science1);

  System.out.println(geography.position);

  System.out.println(geography.floors);

     System.out.println(geography.science1);

           geography.science1=new Book();

          System.out.println(geography.science1.bookName);

 

    }

输出结果为:

Book.Book@15db9742

block 2

4

Book.Book@15db9742  //这应该表示对象中属性Book.Book的地址

道德经

在定义类时,可以自己引用自己,例:

public class Book {

String bookName="道德经" ;//书名

String firstAuthor="";//书的第一作者

String authors="朱熹";//书的其他作者

int bookNumber=5;//书的页数

int bookSize=16;//书是多大的,例如32开,16开等

String language="chinese";//书的语言

Book firstPublication;

但是,在类Book中若为firstPublication附初值new Book(),则会造成死循环,出现错误:StackOverflowError.

原文地址:https://www.cnblogs.com/Ting-light/p/9548609.html