20175305张天钰第四周学习总结

**

第四周学习总结

**

第六章 继承与多态


本章主要学习了有关继承与多态的一些概念和内容。继承就是面向对象中,子类继承父类,避免重复的行为定义。重复再程序设计上是非常不好的信号,因为其大大增加了修改维护程序的成本。要避免重复,就可以把相同的代码程序提升为父类:

public class Role {
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 SwordsMan extends Role{
public void fight(){
System.out.println("挥剑攻击");
}
}
public class Magician extends Role {
public void fight(){
System.out.println("魔法攻击");

}

public void cure() {
System.out.println("魔法治疗");
}
还有一种形式代码如下:

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());

}
}
一些小知识点:
新增和移除时可以用到

public interface ClientListener {
void clientAdded(ClientEvent event);
void clientRemoved(ClientEvent event);
}
import java.util.ArrayList;
public class ClientQuene {
private ArrayList clients = new ArrayList();
private ArrayList listeners = new ArrayList();

public void addClientListener(ClientListener listener){
    listeners.add(listener);
    
}
public void aVoid(Client client){
    clients.add(client);
    ClientEvent event = new ClientEvent(client);
    for(int i=0;i<listeners.size();i++){
        ClientListener listener = (ClientListener)listeners.get(i);
        listener.clientAdded( event);
    }
}

public void remove(Client client){
    clients.remove(client);
    ClientEvent event = new ClientEvent(client);
    for (int i=0;i< listeners.size();i++){
        ClientListener listener = (ClientListener) listeners.get(i);
        listener.clientRemoved(event);
    }
}

}
继承语法
1、protected 的使用:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。
2、super 关键字的使用:

如果想取得父类中的方法定义,可以在调用方法前,加上super关键字,使用super关键字调用的父类方法,不能定义为private。
3、java.lang.Object
在Java中,最上层的父类就是java.lang.Object

代码调试中的问题和解决过程
继承的有些概念还不太理解,抽象类使用的两种方法还不能很好的区分,不是很清楚分别在什么时候使用。

猜你喜欢

转载自www.cnblogs.com/zhangtianyu/p/10590323.html