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 + '\'' +
'}';
}
}
参考