20145225《Java程序设计》 第4周学习总结

20145225《Java程序设计》

第4周学习总结

教材学习内容总结

第六章 继承与多态

6.1继承

  1. 继承共同行为:存在着重复,可把相同的程序代码提升(pull up)为父类。extends关键字表示新建的类会扩充原有的类的行为。

  2. 多态与is-a:子类只能继承一个父类,并且子类与父类之间有一种is-a的关系,让不是一种的类扮演另一种类需要加上类似于 强制类型转换的语法。

  3. 重新定义行为:在继承父类之后,定义与父类中相同的方法部署,但执行内容不同。

  4. 抽象方法、抽象类:如果某个方法区块中真的没有任何程序代码操作,可以使用abstract标示该方法public abstract void fight,定义不完整的类就不能用来生成实例,内含抽象方法的类也一定要定义为不完整的抽象类,子类继承抽象类,对于抽象方法,一种是继续标示其为抽象类,另一种就是操作抽象方法。

6.2继承语法细节

  1. protected成员:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。
  2. 重新定义的细节:在调用方法前加上super关键字,重新定义父类中的方法在子类中权限只能扩大不能缩小,在jdk5之后返回类型也可以是父类中方法返回类型的子类。
  3. 构造函数。
  4. 垃圾收集:对于不再有用的对象,JVM的垃圾收集器会将其释放。不同的需求会有不同的垃圾收集算法。
  5. 抽象类:如果还有些方面没有确定,可以调用抽象方法,等到平台确定后,再对代码进行符合这个平台的完善就行。
    public class Role1{
    private String name;
    private int level;
    private int blood;
public int getBlood()
{
	return blood;
}
public void setBlood(int blood)
{
	this.blood = blood;
}
public int getLevel()
{
	return level;		
}
public void setLevel(int level)
{
	this.level = level;
}
public String getName()
{
	return name;
}
public void setName(String name)
{
	this.name = name;
}

}

public class RPG1
{
	public static void main (String[] args)
	{
		demoSwordsMan();
		demoMagician();
	}
	static void demoSwordsMan()
	{
		SwordsMan1 swordsMan1 = new SwordsMan1();
		swordsMan1.setName("Justin");
		swordsMan1.setLevel(1);
		swordsMan1.setBlood(200);
		System.out.printf("剑士 : (%s, %d, %d)%n",swordsMan1.getName(),
				swordsMan1.getLevel(),swordsMan1.getBlood());
	}
	static void demoMagician()
	{
		Magician1 magician = new Magician1();
		magician.setName("Moinca");
		magician.setLevel(1);
		magician.setBlood(100);
		System.out.printf("魔法师 :(%s ,%d ,%d)%n",magician.getName(),
				magician.getLevel(),magician.getBlood());
		
	}
}

7.1接口

  1. 接口定义行为:对于定义行为,可以使用interace关键字定义,类要操作接口,必须使用implements关键字。

  2. 行为的多态:可以让一个对象强行扮演(cast)某种行为。

  3. 解决需求变化:在java中类可以操作两个以上的类,可以同时继承某个类并操作某些接口;于此同时,java中接口可以继承自另一个接口,也就是继承父接口行为,再在子接口中额外定义行为。

7.2接口语法细节

  1. 接口中的方法没有操作时,一定得是公开并且抽象。

  2. 在interface接口中常常可以定义枚举常数。

  1. 匿名内部类:主要是在临时继承某个类或操作某个接口并建立实例的需求。
  1. 使用enum枚举常数:public enum Action{}。
public class Submarine implements Swimmer{
private String name;
public Submarine(String name){
    this.name=name;
}
public String getName()
{
    return name;
}


@Override
public void swim(){
    System.out.printf("潜水艇 %s 潜行%n",name);
}
}

public abstract class Fish implements Swimmer {
protected String name;
public Fish(String name){
    this.name = name;
}
public String getName()
{
    return name;
}
@Override
public abstract void swim();
}

public class Human implements Swimmer {
private String name;
public Human(String name){
    this.name=name;
}
public String getName()
{
    return name;
}


@Override
public void swim()
{
    System.out.printf("人类 %s 游泳 %n",name);
}
}

public class Airplane implements Flyer{
protected String name;
public Airplane(String name){
    this.name=name;
}



@Override
public void fly(){
    System.out.printf("飞机 %s 在飞%n",name);
}
}

代码调试中的问题和解决过程

本周代码见代码托管https://git.oschina.net/nizaikanwoba/java-besti-is-2015-2016-2-20145225

其他(感悟、思考等,)

没想法,好好学吧。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 150/150 2/2 15/15
第二周 150/300 1/3 15/30
第三周 200/500 1/4 15/45
第四周 200/700 1/5 15/60

参考资料

posted on 2016-03-27 23:02  20145225唐振远  阅读(128)  评论(1编辑  收藏  举报

导航