接口、抽象类、方法复写、类Equals方法重写

接口:

/*
 * Java接口中的數據成員必須初始化,該成員有隱藏的final、satic、常量,
 * 一次賦值后不可在賦值
 * 成員方法訪問修飾符必須是公共修飾符,可以顯示聲明也可以不聲明
 * 成員方法必須全部是抽象方法*/
interface IPerson {
String _className="高中一年級";
public String GetNameAndAge();
}

 

抽象类:

/*
 * 抽象類必須包含抽象方法,並且類必須顯示聲明abstract,抽象成員方法不能實例化
 * final如果類關鍵字聲明為final,那麼此類不可以派生
 * 如果方法聲明為final,那麼此方法不可以複寫
 * 如果數據成員聲明為final,那麼此成員只能賦值一次*/
abstract class Person implements IPerson {
final String _name;
int _age;
public Person(String name,int age)
{
 _name=    name;
 _age=age;
}
public abstract String GetNameAndAge();
}

 

 

派生类:

/*
 * super類似于C#中的base*/
public class Student extends Person {
    private String _school;

    public Student(String name, int age, String school) {
        super(name, age);
        _school = school;
    }

    public String getSchool() {
        return _school;
    }

    public String GetNameAndAge() {
        return "Name:" + super._name + ";Age:" + super._age;
    }

    /*
     * Java中,对象比较默认的Equals方法是继承于基类Object,
     * 所以在子类中必须把基类的Equals重写,
     * 才能使当前类中的equals起作用*/
    public boolean equals(Object obj) {
        boolean _result = false;
        if (obj != null) {
            Student _student1 = this;
            if (obj instanceof Student) {
                Student _student2 = (Student) obj;
                if (_student1.getSchool().equals(_student2.getSchool()))
                    _result = true;
            }
        }
        return _result;
    }
}

 

 

入口类:

public class ExecStudent {
public static void main(String[] args)
{
  Student _student=new     Student("zhang san",19,"riben university");
  System.out.println("ClassName:"+IPerson._className+";School:"+_student.getSchool());
  System.out.println("Name and age:"+_student.GetNameAndAge());
  
  Student _student1=new Student("李三",18,"开开中学");
  Student _student2=new Student("李三",18,"开开中学");
  if(_student1.equals(_student2))
      System.out.println("二者是同一個人喲~");
  else
      System.out.println("二者不是同一個人喲~");
}
}

 

posted @ 2013-08-30 18:19  fang_beny  阅读(917)  评论(0编辑  收藏  举报