您的位置:首页 > 编程语言 > Java开发

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

2016-03-27 23:02 435 查看

20145225《Java程序设计》

第4周学习总结

教材学习内容总结

第六章 继承与多态

6.1继承



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

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

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

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


6.2继承语法细节



protected成员:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。

重新定义的细节:在调用方法前加上super关键字,重新定义父类中的方法在子类中权限只能扩大不能缩小,在jdk5之后返回类型也可以是父类中方法返回类型的子类。

构造函数。

垃圾收集:对于不再有用的对象,JVM的垃圾收集器会将其释放。不同的需求会有不同的垃圾收集算法。

抽象类:如果还有些方面没有确定,可以调用抽象方法,等到平台确定后,再对代码进行符合这个平台的完善就行。

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接口



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

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

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


7.2接口语法细节



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

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




匿名内部类:主要是在临时继承某个类或操作某个接口并建立实例的需求。




使用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/1502/215/15
第二周150/3001/315/30
第三周200/5001/415/45
第四周200/7001/515/60

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导

毕向东java视频及教学pdf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: