zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    redis配置认证密码以及远程访问
    Mybatis缓存配置
    Node.Js安装
    1.ArcGis几何图形之几何计算
    MessagePack 新型序列化反序列化方案
    Redis(六)-数据类型
    Redis(五)-数据库
    Redis(四)-配置
    Redis(三)-Ubuntu下安装
    Redis(二)-Win系统下安装
  • 原文地址:https://www.cnblogs.com/Ting-light/p/9548609.html
Copyright © 2011-2022 走看看