发表于: 2018-01-29 01:04:52

2 608


今天完成的事情:

学习java基础中的类和对象的部分内容

这部分包含了面向对象的内容,理解起来比较费劲,做了一部分练习,然后看了看视频

练习内容如下

1.

package com.java.test.class_and_object;
/*
设计一个类Armor护甲
继承Item类,并且额外提供一个属性ac: 护甲等级 int类型

实例化出两件护甲
名称 价格 护甲等级
布甲 300 15
锁子甲 500 40
*/
public class Armor extends Item{
int ac;//增加了ac这一属性
public static void main(String[] args){
Armor quilted_armor=new Armor();
   quilted_armor.name="布甲";
   quilted_armor.price=300;
   quilted_armor.ac=15;
   Armor hauberk=new Armor();
   hauberk.name="锁子甲";
   hauberk.price=500;
   hauberk.ac=40;
   System.out.println("物品"+"\n"+quilted_armor.name+" "+quilted_armor.price+" "+quilted_armor.ac+"\n"+hauberk.name+" "+hauberk.price+" "+hauberk.ac);
}
}

2.

package com.java.test.class_and_object;
/*
设计一个类Support (辅助英雄)继承Hero,提供一个heal(治疗)方法
对Support的heal方法进行重载
heal()
heal(Hero h) //为指定的英雄加血
heal(Hero h, int hp) //为指定的英雄加了hp的血
*/
public class Support extends Hero {
public void heal() {
System.out.println(name + "自己进行了治疗");
   }

public void heal(Hero ...heros) {
for(int i=0;i< heros.length;i++){
System.out.println(name+"治疗了"+heros[i].name);
       }
}//这里用了可变数量参数的方法
   public void heal(int hp,Hero ...heros){
for(int i = 0; i<heros.length; i++){
System.out.println(name+"给"+heros[i].name+"加了"+hp+"血");
       }
}//在这里初次编译时出现问题,Hero ...heros只能放在后面,类推数组类型的参数只能在后面写?
   public static void main(String[] args){
Support qinNv=new Support();
       qinNv.name="琴女";
       qinNv.hp=500;
       qinNv.armor=32.13f;
       qinNv.moveSpeed=200;
       Hero teemo=new Hero();
       teemo.name="提莫";
       Hero jax=new Hero();
       jax.name="贾克斯";
       qinNv.heal();
       qinNv.heal(teemo,jax);
       qinNv.heal(300,teemo,jax);
   }
}//这里将两个Hero的对象放在Hero类中,应该会好一些,但是做的时候还未学到。

这里需要说明一下做到练习二的时候Hero类中的内容仅有属性,无报错;做到练习三的时候因为增加了Hero方法导致报错,原因应该是参数方法的问题,在练习四的代码中加了句空的方法,恢复运行

3.

package com.java.test.class_and_object;
/*
为Hero设计4个参数的构造方法
这四个参数分别是
String heroName
float heroHP
float heroArmor
int heroMoveSpeed
*/
public class Hero {
String name;
   float hp;
   float armor;
   int moveSpeed;
   public Hero(){}//这里增加了空参数的方法,解决Support练习中的报错
   public Hero(String heroName,float heroHP,float heroArmor,int heroMoveSpeed){
name=heroName;
       hp=heroHP;
       armor=heroArmor;
       moveSpeed=heroMoveSpeed;
   }
public static void main(String[] args){
Hero green=new Hero("盖伦",300f,32f,34);
   }
}

4.

package com.java.test.class_and_object;
/* This的使用
参考练习-构造方法 设计一个构造方法,但是参数名称不太一样,分别是
String name
float hp
float armor
int moveSpeed

不仅如此,在这个构造方法中,调用这个构造方法

public Hero(String name,float hp)
*/
public class Hero2 {
String name;
   float hp;
   float armor;
   int moveSpeed;
   public Hero2(String name,float hp){
this.name=name;
       this.hp=hp;
   }
public Hero2(String name,float hp,float armor,int moveSpeed){
this(name,hp);
       this.armor=armor;
       this.moveSpeed=moveSpeed;
   }
public static void main(String[] args){
Hero2 jax=new Hero2("贾克斯",300f,31f,32);
       System.out.println(jax.name+" "+jax.hp+" "+jax.armor+" "+jax.moveSpeed);
   }
}

感觉这部分的内容操作起来不算太难,但是理解的不够深刻,做到这里时决定放慢些速度,去看马士兵老师的这个部分的视频,希望加深下理解

明天计划的事情:

继续学习java基础,将类和对象学完,在结合视频加深这个部分的理解
遇到的问题:

1.对象在哪里创建比较好? 

2.为什么创建对象时要在主方法内?可以放在主方法外么?这两种方式有什么区别?

3.比如说,练习中琴女既是Hero类的对象也是Support类的对象,这种情况怎么办,再两个类中都实例化么?会不会浪费内存?

这些问题时今天学习时想到的,明天学完类和对象部分在学习视频时尝试理解,如果还不明白再去查查。

收获:

1.了解了什么时面向对象。

2.类是对一种“事物”的集合,对象是这种事物的“个体”,比如说学生,学生中的个体是对象。

3.类之间的关系:关联、继承、聚合(包含聚集和组成)、实现(方法)、多态(这个暂时还未学到)

4.程序设计时面向对象的思维:有哪些类,那些对象;应该有什么属性和方法;他们之间的关系。

5.如何创建一个类:class 类名{属性和方法}

6.如何引用一个类:类名 对象名=new 类名(参数(如果定义了类方法))

7.如何继承一个类:class 类名(需要继承的) extends 类名(需要被继承的){可增加属性和方法}

8.方法的重载:方法名一样,但是参数不一样即:  class 类名(这里的内容就是参数){}

9.实例化是通过构造方法(构造器)实现,构造方法不写相当于空即:public 方法名(与类名相同) (){};

10.this:代表这个对象。

11.大概明白了之前做任务时比如System.out.print这种形式的的意思:应该是System类中out这个方法的print方法?


返回列表 返回列表
评论

    分享到