面向对象编程(OOP)类

类的包含

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)对应目录结构

 面向对象编程(OOP)类_第1张图片

例题

 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 }
Book题目

面向对象编程(OOP)类_第2张图片

你可能感兴趣的:(面向对象编程(OOP)类)