JavaCore複習
/*!
* 繼承
* Java和C++繼承的區別在於
* 1.Java繼承的關鍵字是extends,C++是:
* 2.Java繼承只能是公有繼承,java沒有private,protected繼承
* 3.Java繼承只能是單繼承,多繼承採用的方法類似接口實現
*/
import static java.lang.System.*;
/*!
* 上課
* interface的所有方法都是abstract public
* 特別注意::abstract public ,說明實現接口的必須是public,
* 如果是低於public會報降低了訪問權限
*/
interface AttendClass{
String getClassName() ;
String getTeacher();
String getClassRoom();
}
/*!
* class沒有說明訪問權限,默認是friendly
* 只有同一個包內可見,一個java文件中只能擁有一個同名的public類(在頂層)
* 當然嵌套是可以的
* A.java
* public class A{
* public class B{
* }
* }
*
* public class M{} //錯誤,A中只能有一個public
*/
class Address{
private String city;
private String address;
private String addressNo;
private String province;
public Address(String city, String address, String addressNo, String province){
this.city = city;
this.address = address;
this.addressNo = addressNo;
this.province = province;
}
public String toString(){
return province +"省"+city +"市 "+address+addressNo;
}
public void show(){
out.println(String.valueOf(this));
}
}
/*!
* 參加活動
*/
interface AttendActivities{
String getActivitesName();
String getHostName();
Address getAssemblyPoint();
}
/*!
* 基類,父類
*/
class Person{
enum Sex{
MALE,
FEMALE
}
/*!所有的對象默認值都是null*/
private String name = "";
private int age = 18;
private String id = "";
private Sex sex;
public Person(){
}
public Person(String name, int age, String id, Sex sex){
this.name = name;
this.age = age;
this.id = id;
this.sex = sex;
}
public String getSex(){
return (sex == Sex.MALE) ? "Male" : "Female";
}
/*!
* 測試子類對象調用同名的父類對象函數
* 使用super關鍵字
*/
public void showyou(){
out.println("姓名:"+name +
" 性別:" + getSex() +
" 年齡:" + age +
" 身份證號:" + id);
}
public void clone(Person other){
this.name = other.name;
this.age = other.age;
this.id = other.id;
this.sex = other.sex;
}
}
/*!
* 派生類,Java中派生類調用基類和python類似,調用super來實現
* 在java中super關鍵子表徵父類對象
* 在java中構造函數互相調用,必須使用this(argument,...)
* 不能跟C++一樣直接使用類名稱來進行調用
*/
class Student extends Person implements AttendClass, AttendActivities{
private String studentNo;
public Student(String name, int age, String id, Sex sex, String studentNo){
super(name, age, id, sex);
this.studentNo = studentNo;
}
/*!構造函數互調*/
public Student(int studentNo){
this.studentNo = String.valueOf(studentNo);
super.clone(generateNewPerson());
}
private static Person generateNewPerson(){
return new Person("zhangsan", 29, "FSJ93209", Sex.MALE);
}
/*
* 實現AttendClass和AttendActivities的接口
* 接口的實現必須是public的,否則會報錯,正在分配更低的權限
*/
public String getClassName() { return "一年級";}
public String getTeacher() {return "老王";}
public String getClassRoom() { return "302";}
/*!
* 實現AttendActivites的接口
*/
public String getActivitesName() { return "爬山";}
public String getHostName() { return "周星馳";}
/*!Java 中所有的對象都要加上new,否則調用的時候會認爲是方法,找不到該方法*/
public Address getAssemblyPoint() { return new Address("上海", "虹橋大街", "300號", "上海直轄市");}
/*!
* 重新實現Student自己的showyou
*/
public void showyou(){
super.showyou();
out.println("我的學生號:" + studentNo);
}
public void yourActivities(){
out.println("你要去:" + String.valueOf(getAssemblyPoint()) +
" 招待人:" + getHostName() +
" 活動主題:" + getActivitesName());
}
public void yourAttendClass(){
out.println("你是: " + getClassName() + "學生"+
" 你要去:" + getClassRoom() + "教室上課" +
" 老師是:" + getTeacher());
}
}
public class JavaCore05{
public static void main(String[] args){
Student s = new Student(1001);
//在子類中調用父類的方法
s.showyou();
//調用實現的接口
s.yourActivities();
s.yourAttendClass();
}
}
* 繼承
* Java和C++繼承的區別在於
* 1.Java繼承的關鍵字是extends,C++是:
* 2.Java繼承只能是公有繼承,java沒有private,protected繼承
* 3.Java繼承只能是單繼承,多繼承採用的方法類似接口實現
*/
import static java.lang.System.*;
/*!
* 上課
* interface的所有方法都是abstract public
* 特別注意::abstract public ,說明實現接口的必須是public,
* 如果是低於public會報降低了訪問權限
*/
interface AttendClass{
String getClassName() ;
String getTeacher();
String getClassRoom();
}
/*!
* class沒有說明訪問權限,默認是friendly
* 只有同一個包內可見,一個java文件中只能擁有一個同名的public類(在頂層)
* 當然嵌套是可以的
* A.java
* public class A{
* public class B{
* }
* }
*
* public class M{} //錯誤,A中只能有一個public
*/
class Address{
private String city;
private String address;
private String addressNo;
private String province;
public Address(String city, String address, String addressNo, String province){
this.city = city;
this.address = address;
this.addressNo = addressNo;
this.province = province;
}
public String toString(){
return province +"省"+city +"市 "+address+addressNo;
}
public void show(){
out.println(String.valueOf(this));
}
}
/*!
* 參加活動
*/
interface AttendActivities{
String getActivitesName();
String getHostName();
Address getAssemblyPoint();
}
/*!
* 基類,父類
*/
class Person{
enum Sex{
MALE,
FEMALE
}
/*!所有的對象默認值都是null*/
private String name = "";
private int age = 18;
private String id = "";
private Sex sex;
public Person(){
}
public Person(String name, int age, String id, Sex sex){
this.name = name;
this.age = age;
this.id = id;
this.sex = sex;
}
public String getSex(){
return (sex == Sex.MALE) ? "Male" : "Female";
}
/*!
* 測試子類對象調用同名的父類對象函數
* 使用super關鍵字
*/
public void showyou(){
out.println("姓名:"+name +
" 性別:" + getSex() +
" 年齡:" + age +
" 身份證號:" + id);
}
public void clone(Person other){
this.name = other.name;
this.age = other.age;
this.id = other.id;
this.sex = other.sex;
}
}
/*!
* 派生類,Java中派生類調用基類和python類似,調用super來實現
* 在java中super關鍵子表徵父類對象
* 在java中構造函數互相調用,必須使用this(argument,...)
* 不能跟C++一樣直接使用類名稱來進行調用
*/
class Student extends Person implements AttendClass, AttendActivities{
private String studentNo;
public Student(String name, int age, String id, Sex sex, String studentNo){
super(name, age, id, sex);
this.studentNo = studentNo;
}
/*!構造函數互調*/
public Student(int studentNo){
this.studentNo = String.valueOf(studentNo);
super.clone(generateNewPerson());
}
private static Person generateNewPerson(){
return new Person("zhangsan", 29, "FSJ93209", Sex.MALE);
}
/*
* 實現AttendClass和AttendActivities的接口
* 接口的實現必須是public的,否則會報錯,正在分配更低的權限
*/
public String getClassName() { return "一年級";}
public String getTeacher() {return "老王";}
public String getClassRoom() { return "302";}
/*!
* 實現AttendActivites的接口
*/
public String getActivitesName() { return "爬山";}
public String getHostName() { return "周星馳";}
/*!Java 中所有的對象都要加上new,否則調用的時候會認爲是方法,找不到該方法*/
public Address getAssemblyPoint() { return new Address("上海", "虹橋大街", "300號", "上海直轄市");}
/*!
* 重新實現Student自己的showyou
*/
public void showyou(){
super.showyou();
out.println("我的學生號:" + studentNo);
}
public void yourActivities(){
out.println("你要去:" + String.valueOf(getAssemblyPoint()) +
" 招待人:" + getHostName() +
" 活動主題:" + getActivitesName());
}
public void yourAttendClass(){
out.println("你是: " + getClassName() + "學生"+
" 你要去:" + getClassRoom() + "教室上課" +
" 老師是:" + getTeacher());
}
}
public class JavaCore05{
public static void main(String[] args){
Student s = new Student(1001);
//在子類中調用父類的方法
s.showyou();
//調用實現的接口
s.yourActivities();
s.yourAttendClass();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.