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