<03>【掌握】02-应用:类的创建练习+【掌握】03-对象的存储细节+

 类名:Person
 属性:年龄(_age)、体重(_weight)
 动作:吃饭(eat)方法、散步(walk)方法

 功能:人可以吃各种食物
 每次散步,让体重-0.2
#import <Foundation/Foundation.h>

//Person类的声明
@interface Person:NSObject
{
    //类的实例变量(属性、成员变量)
    @public
    NSString *_name;  //姓名
    int _age;         //年龄
    float _weight;    //体重
}

//定义人的行为
-(void)eat:(NSString *) foodName;
//散步
-(void)walk:(int) num;

@end

//Person类的实现
@implementation Person

//定义人的行为
-(void)eat:(NSString *) foodName{

    //吃饭以后,体重要在原来的基础上增加0.6
    _weight += 0.6f;
    NSLog(@"您吃了%@,当前体重:%.2f",foodName,_weight);

}
//散步
-(void)walk:(int) num{

    //每走100步  体重减去 0.2
    //234步   0.4  = 0.2*2
    //num / 100  *0.2f;
    _weight -= num/100 *0.2f;
    NSLog(@"您走了%d步,当前体重为:%.2f",num,_weight);

}

@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        //创建对象
        //[Person new];
        //开空间   初始化   返回空间的首地址
        Person *p = [Person new];

        //设置对象的实例变量的值
        p->_name = @"史泰龙";
        p->_weight = 180.0f;
        p->_age = 18;

        [p eat:@"四川麻辣烫"];
        [p eat:@"回锅肉"];

        [p walk:888];

    }
    return 0;
}
2015-07-16 11:27:19.429 02-应用:类的创建练习[679:33008] 您吃了四川麻辣烫,当前体重:180.60
2015-07-16 11:27:19.429 02-应用:类的创建练习[679:33008] 您吃了回锅肉,当前体重:181.20
2015-07-16 11:27:19.430 02-应用:类的创建练习[679:33008] 您走了888步,当前体重为:179.60

【掌握】03-对象的存储细节

        1、申请的空间在内存的哪个区?     

        2、实例变量又保存在什么地方  

        3、对象方法保存在什么地方

        4、为什么使用 [p run]; 就可以调用方法了 ?如何调用的

        5、一个类可以创建多个对象
栈区(对象指针在这)  内存堆区(创建的对象在这,实例变量在这)   内存代码区(包含方法的基本信息,调用到的方法在这),这几个区是分开的
#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    @public
    int _age;
    float _weight;
    NSString *_name;
}
//行为
-(void)run;
@end

@implementation Person
-(void)run{

    NSLog(@"人正在跑");

}

@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        //创建对象
        Person *p = [Person new];
        p->_name = @"柯南";
        p->_age = 13;

        //_age 0
        //_name null

        NSLog(@"姓名:%@,年龄:%d,体重:%f",p->_name,p->_age,p->_weight);

        [p run];

        //[Person new] 做了3件事情
        // 1) 申请内存空间
        // 2)给实例变量初始化
        // 3) 返回空间的首地址

        //1、申请的空间在内存的哪个区?
        //   new 的时候申请的空间在内存的堆区(程序动态分配的内存空间)
        //   当new的时候内存的布局是这么样的
        //初始化的时候:
        //如果实例变量是基本数据类型,此时给初始化为0
        //如果  。。。。OC字符串类型             null

        //2、实例变量又保存在什么地方
        //  堆区
        //  p(指针变量) 存放在栈区

        //3、对象方法保存在什么地方
        //  代码区

        //4、为什么使用 [p run]; 就可以调用方法了 ?如何调用的
        // 首先找p对应的堆区的空间,然后找到 _isa指针,再找到_isa指向的
        //代码区的空间,然后到该空间中找 方法

        //5、一个类可以创建多个对象
        //又创建了一个对象p1
        Person *p1 = [Person new];
        p1->_name = @"贝娜";
        p1->_age = 33;

        NSLog(@"姓名:%@,年龄:%d,体重:%f",p1->_name,p1->_age,p1->_weight);

        [p1 run];

    }
    return 0;
}
2015-07-16 11:56:04.569 03-对象的存储细节[699:38284] 姓名:柯南,年龄:13,体重:0.000000
2015-07-16 11:56:04.570 03-对象的存储细节[699:38284] 人正在跑
2015-07-16 11:56:04.570 03-对象的存储细节[699:38284] 姓名:贝娜,年龄:33,体重:0.000000           //体重是没有赋值的,所以就根据类型默认值
2015-07-16 11:56:04.570 03-对象的存储细节[699:38284] 人正在跑
时间: 2024-10-03 11:12:42

<03>【掌握】02-应用:类的创建练习+【掌握】03-对象的存储细节+的相关文章

InetAddress类之创建新的InetAddress对象

java.net.InetAddress类是Java对IP地址(包括IPv4和IPv6)的高层表示.大多数其他网络类都要用到这个类,包括Socket,ServerSocket,URL,DatagramSocket,DatagramPacket等.一般地讲,它包括一个主机名和一个IP地址. 创建新的InetAddress对象 InetAddress类没有公共构造函数.实际上,InetAddress有一些静态工厂方法,可以连接到DNS服务器来解析主机名.最常用的是InetAddress.getByN

java中查询某个类已经创建了多少个对象了

这个代码主要是使用类的静态字段和构造函数,可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象? 主要是在构造函数中用到了静态数据,进行显示已经构造了多少个类对象. package lianxi1; import java.util.Scanner; public class lianxi { public static int w2=0; public lianxi() { w2+=1; } public static void main(String[

按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。 创建第

package com.hanqi.test; public class jidongche { private String chepaihao;//车牌号 private int speed;//速度 private double weight;//载重量 //无参构造方法 jidongche() { } public String getChepaihao() { return chepaihao; } public void setChepaihao(String chepaihao)

11.按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另 一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。

package java1; public class Che { //属性 public String nub; public int speed; public double weight ; Che() { nub="XX1234"; speed=100; weight=100; } Che(String nub, int speed,double weight) { this.nub = nub; this.speed = speed; this.weight = weight

(1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。

package a; public class Jidongche { private String chepaihao; private int chesu; private double zaizhong; public String getChepaihao() { return chepaihao; } public void setChepaihao(String chepaihao) { this.chepaihao = chepaihao; } public int getChes

C#类的创建与初始化

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace C_编辑基础 { class Person { public string Name; //因为Name没有赋值,而它是string类型的,所以它的默认值就是Null public int Age; //因为Age和Gender也没有赋值,而它两是int类型的,所以他们两个的默认值为0 public int

php简单实用的操作文件工具类(创建、移动、复制、删除)

php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) {  // 原目录,复制到的目录 $dir = opendir($src); @mkdir($dst); while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { if ( is_dir($src . '/' . $file) )

写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”

源代码: package jxl;class sum{ public static int a=0; int c1; public sum(int c2){ c1=c2; a++; } public int get(){ return a; }}public class Test4 { public static void main(String[] args) { // TODO 自动生成的方法存根 //调用 sum one=new sum(2); sum two=new sum(3); //

android判断和创建快捷方式(4.03测试通过)

整理了网上的创建方式的代码,对于快捷方式的判断使用系统api获取当前启动器来处理,这样系统定制过或者启动器不一样也没关系 . 一加权限和声明目标activity <!-- 创建快捷方式 --> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <uses-permission android:name="com.android.l