这个星期主要是复习一下Java,虽然说是复习,但是收获还是蛮多的。Java是单继承,但是通过接口的多继承来弥补了Java单继承的缺点,Java可以同时继承多个接口和一个父类,但是一个类不能同时继承多个父类。如下代码:
interface Inter1{
public static final int AGE = 20;
public abstract void tell();
}
interface Inter2{
public abstract void say();
}
abstract class Abs1{
public abstract void print();
}
class A extends Abs1 implements Inter1,Inter2{
public void tell() {
// TODO Auto-generated method stub
}
public void print() {
// TODO Auto-generated method stub
}
@Override
public void say() {
// TODO Auto-generated method stub
}
}
通过这个星期的复习,也加深了对Java中抽象类的理解,以前在看抽象类时,完全不知道抽象类可以用来做什么,觉得直接写一个类,再用来继承就可以了。现在对抽象类的作用有了更多的理解。在我看来定义一个抽象类就像是在打游戏中获得一把最最基础的宝剑,在所有玩家刚开始的时候都会有的宝剑,宝剑的基础属性是完全相同的,但是在不同的玩家手中宝剑升级后的属性加成可能会有所不同。这就意味着,在继承抽象类时,他的派生类可以具体化为很多种不同的可能,并且每一个具体化后的模块都依赖这个固定的抽象体,抽象体是处于隐藏状态,不可修改。就相当于宝剑的基础属性值是不可修改的(单机游戏中使用修改器除外)。如下抽象类代码 :
abstract class Person{
private int age;
private String name;
public Person(int age,String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void tell();
}
class Student extends Person{
private int score;
public Student(int age, String name,int score) {
super(age, name);
this.score = score;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public void tell() {
System.out.println("年龄 :" + getAge() + " 姓名 :" + getName() + " 成绩 :" + getScore());
}
}
class Workers extends Person{
private int money;
public Workers(int age, String name,int money) {
super(age, name);
this.money = money;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public void tell() {
System.out.println("年龄 :" + getAge() + " 姓名 :" + getName() + " 工资 :" + getMoney());
}
}