继承性

## 继承性

1。继承是多态的前提,如果没有继承就没有多态;

2.继承解决的问题:共性抽取

3.子类可以拥有父类的内容,也可以拥有自己的内容

4.在继承关系中“子类就是一个父类”,子类可以被当作父类;父类是员工,子类是技术工,那么技术工就是员工。

**格式**

父类:(一个普通的定义)

public class 父类名{

//.....

}

子类:
public class 子类名 extends 父类名{

//.....

}

### 继承中成员变量重名的访问特点

```java
/*
在父子类的继承关系中,如果成员变量重名,则创建子类对象是,访问有两种特点
1. 直接通过子类对象访问变量
“=”左边是谁就优先用谁没有则向上找
2. 间接通过成员方法访问成员变量
该方法属于谁就优先用谁,没有则向上找

*/
```

#### 定义一个父类

```java
public class Demo01Fu {

int num = 10;
int numfu = 100;

public void methodfu(){
System.out.println("这是一个父类:"+num);
}
}
```

#### 定义一个子类

```java
public class Demo01Zi extends Demo01Fu {
int num = 20;
int numzi = 100;

public void methodzi(){
System.out.println("这是一个子类:"+num);
}

//若调用
public void testmethod(){
int num = 30;
System.out.println(num);//30
System.out.println(this.num);//20
System.out.println(super.num);//10
//区分·子类方法中重名的的三种
//(父类成员变量(super.变量名)、子类成员变量(this.变量名)和局部变量(直接写))
}


}
```

#### 调用其中的成员变量

```java
public class Test {
public static void main(String[] args){

Demo01M fu = new Demo01M();
System.out.println(fu.numfu);//100
System.out.println(fu.num);//10
//System.out.println(fu.numzi);错误;父类就是有一个普通的类,不能调用子类当中的内容

Demo01Z zi = new Demo01Z();
System.out.println(zi.numfu);//100
//子类中没有改成员变量,向上找
System.out.println(zi.numzi);//200
System.out.println(zi.num);//20,
// 在父类当中有重名成员变量,但‘=’左边是子类对象,所以用子类中成员变量

System.out.println("========");
zi.methodzi();//num 20
zi.methodfu();//num 10
//通过成员方法访问成员变量

System.out.println("========");
zi.testmethod();

}
}
```

原文地址:https://www.cnblogs.com/susexuexi011/p/13767811.html