7.2类

定义方法:

7.2.1类的构造方法

在类的成员方法之外,还存在一种特殊的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,每当类实例化一个对象时,类都会自动调用构造的方法。

构造方法定义语法格式:

public book(){

//。。。构造方法体

}

***public   构造方法修饰符

***book    构造方法的名称

在构造方法中可以为成员变量赋值,这样当实例化一个本类的对象时,相应的成员变量也将被初初始化。

public class Book {
    //构造方法
    //方法名和类名 一样
    //对构造参数而言,没有返回值,不需要加void
    //只要自定义了构造方法,就不会自动添加默认构造方法
    Book()
    {
        //完成初始化
        name="默认书名";
    }
    Book(String bookname)
    {
        //初始化
        name=bookname;
    }
    Book(String name,String category)
    {
        //初始化
        this.name=name;
        //this关键字代表类的本身
        this.category=category;
    }

7.2.2成员变量

在Java中对象的属性称为成员变量,也可称为属性。

成员变量对应于类对象的属性。

在Java中,使用class关键字来定义类。成员变量的类型可以设置为Java中合法的数据类型,其实成员变量就是普通的变量,可以为他设置初始值,也可以不为其设置,如果不设置初始值,则会有默认值。

7.2.3成员方法

在Java中使用成员变量方法对应于类对象的行为。

成员方法的格式:权限修饰符  返回值类型  方法名(参数类型 参数名)

{   //方法体

retuin  (返回值);

}

一个成员方法可以有参数,这个参数可以是对象也可以是基本数据类型的变量,同时成员方法有返回值和不返回任何值的选择,如果返回方法需要返回值可以在方法体中使用return关键字,使用这个关键字后,方法的执行将被终止。

注意:JAVA语言中的成员方法无法返回值可以使用void关键字表示。

成员方法的返回值可以是计算结果也可以是其他想要的数值,对象,返回值类型要与返回的值类型一致。

再成员方法中可以调用其他成员方法和类的成员变量。同时在成员方法中可以定义一个变量,这个变量为局部变量。

如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量进行访问。

成员方法的分类:

上课讲课:

package 面向对象编程;

public class Book {
    //构造方法
    //方法名和类名 一样
    //对构造参数而言,没有返回值,不需要加void
    //只要自定义了构造方法,就不会自动添加默认构造方法
    Book()
    {
        //完成初始化
        name="默认书名";
    }
    Book(String bookname)
    {
        //初始化
        name=bookname;
    }
    Book(String name,String category)
    {
        //初始化
        this.name=name;
        //this关键字代表类的本身
        this.category=category;
    }
    //属性 成員变量
    //书名
    String name;
    //書的類別
    String category="其他";
    //内容
    String content="";//不是null
    //价格
    double price=10;
    //成員方法
    //方法的表现形式之一:没有返回值(void),没有传入参数()
    void print()
    {
        System.out.println("讀這本书的書名叫做《"+name+"》的書");
        System.out.println("我读的书的内容"+content);
    }

    //表现形式之二:没有返回值(void),有传入参数(数据类型 参数名)
    void write(String mycontent)
    {
        System.out.println("我写的内容:"+mycontent);

        if(content.length()>=1000)
        {
            return;
        }
        content +=mycontent;
        System.out.println("我写完之后的内容:"+content);
    }

    //表现形式之三:有返回值()没有传入参数
   String read()
    {
        //返回值  不光跳出循环,直接跳出方法
       return content;

    }

 //表现形式之四:有返回值,有传入参数
   //卖书
   //根据卖出的数量计算并返回钱数
   double sell(int count)
   {
       return (price*count);
   }

}

上课讲义

package 面向对象编程;

public class Text {

    public static void main(String[] args) {
        //构造一本书
        Book myBook=new Book("JAVA基础教程","java教程类");//默认构造方法

        //myBook.name="JAVA基础教程";
        System.out.println("类别="+myBook.category);

        myBook.content="教程类";

        //myBook.category="JAVA教程类";

        myBook.content="第一章";

        String str=myBook.read();//成员方法 

        System.out.println("读出的内容="+str);

        myBook.write("JAVA的发展史");

        str =myBook.read();

        int c=3;//卖出的本数

        System.out.println("读出的内容="+str);

        System.out.println("卖"+c+"本书的钱数"+myBook.sell(3));

        myBook.print();

        System.out.println();

        //第二本书

        Book myBook1=new Book();

        myBook1.name="战争与和平";

        myBook1.category="名著类";

        System.out.println("类别="+myBook1.category);

        myBook1.read();
        myBook1.print();

    }
    }

上课讲义2

输出:

类别=java教程类
读出的内容=第一章
我写的内容:JAVA的发展史
我写完之后的内容:第一章JAVA的发展史
读出的内容=第一章JAVA的发展史
卖3本书的钱数30.0
讀這本书的書名叫做《JAVA基础教程》的書
我读的书的内容第一章JAVA的发展史

类别=名著类
讀這本书的書名叫做《战争与和平》的書
我读的书的内容

7.3.4this关键字

this关键字被隐式的用于对象的成员变量和方法。

this关键字可以调用成员变量和成员方法。

时间: 2024-08-10 15:02:21

7.2类的相关文章

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

C#嵌套类

嵌套类顾名思义就是类或者结构中定义的类 class Container { class Nested { Nested() { } } } <1>嵌套类的默认访问权限是private ,可以指定为public,protected,private,internal,protected internal.<2>嵌套类型可以访问外部类(包裹嵌套类的类),如果要访问外部类型,要把外部类通过构造函数传进一个实例<3>嵌套类中只能访问外部类中的静态成员,不能直接访问外部类的非静态成

一个实用的C#网页抓取类代码分享

一个实用的C# 网页抓取类 模拟蜘蛛,类中定义了超多的C#采集文章.网页抓取文章的基础技巧,下面分享代码: using System; using System.Data; using System.Configuration; using System.Net; using System.IO; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using Sys

类图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

java 类对象使用

在学习反射机制时,总结一下获得类对象方式: 第一种方式:通过类本身来获得对象 Class<?> classname = this.getClass(); 或者this.class 第二种方式:通过子类的实例获取父类对象 ClassName cn = new ClassName(); UserClass = cn.getClass(); Class<?> SubUserClass = UserClass.getSuperclass(); 第三种方式:通过类名加.class获取对象 C

Python-class类的相关总结

在Python中,所有的数据类型都可以视为对象,自定义的对象数据类型就是面向对象中的类(class)的概念. 面向对象编程:object oriented programming简称OOP. 1 ###简单举例,以登记学生的姓名和成绩举例 2 #!/usr/bin/python 3 #-*- coding:utf-8 -*- 4 class Student(object): ##定义student类 5 def __init__(self, name, score): ##__init__可以绑

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中