package com.pay;
/**
* 繼承關係
*/
public class Son extends Father{
String sonName;
String sonAge;
public Son(String sonName, String sonAge) {
this.sonName = sonName;
this.sonAge = sonAge;
}
public Son() {
//子類不能繼承父類的構造方法,但是可以訪問
// super(); 繼承之後 supt()調用的是父類空的構造方法
super("432","2131");
System.out.println("子類的構造方法");
}
public String getSonName() {
return sonName;
}
public void setSonName(String sonName) {
this.sonName = sonName;
}
public String getSonAge() {
return sonAge;
}
public void setSonAge(String sonAge) {
this.sonAge = sonAge;
}
public void sonSpeak(){
System.out.println("son 的成員方法");
}
//在子類中存在和父類繼承方法有相同的返回類型,相同的方法名,相同的參數列表(參數類型相同,參數個數相同),這個就叫方法重寫
//子類方法重寫是給於的訪問權限要大於或者等於父類方法的訪問權限
//父類方法名使用private修飾的方法子類不能重寫,即使方法聲明完全一樣也不屬於重寫。屬於另寫了一個方法
public void speak(){
System.out.println("重寫了嗎");
}
private void speakPrivate(){
System.out.println("私有方法 重寫了嗎");
}
public static void main(String[] args) {
Son son = new Son();
//1.子類擁有父類(除構造方法外)的所有成員變量和成員方法
son.name = "son設置了名字"; //設置父類的屬性
son.speak(); //調用父類的方法 ,在沒有重寫的情況下
//2.子類可以擁有自己的成員變量和成員方法,既對父類的擴展
System.out.println(son.sonName ="321");
son.sonSpeak();
//3.子類可以使用自己的方式去實現父類中的方法(方法重寫)
son.speak();
//3.3當父類方法私有後,則子類不能重寫該方法
//son.speakPrivate(); //不能調用父類的私有方法 在沒有和父類相同生命的方法的情況下
son.speakPrivate(); //雖然是這樣,但是不屬於重寫
}
}
class Father{
//成員變量
String name;
String age;
//父類空的構造函數
public Father() {
System.out.println("父類的構造方法");
}
//父類重載的構造函數
public Father(String name, String age) {
this(); //再調用Father 空的構造函數
System.out.println("父類的兩個參數的構造方法");
this.name = name;
this.age = age;
}
//get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
//成員方法
public void speak(){
System.out.println("Father 的成員方法");
}
//成員方法
private void speakPrivate(){
System.out.println("Father 的成員方法 私有的");
}
//toString
@Override
public String toString() {
return "Father{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
參考