继承的概念:
在程序中,继承是描述类与类之间的所属关系
继承格式:
class 子类 extends父类{ }
继承的特点:
1.java中,类只支持单继承,不允许多继承
2.一个类可以被多个类继承()
3.多层继承,有个类的父类可以继承另一个父类
4.子父类的关系是相对的
继承中成员变量的特点
1.只能继承父类非私有化的
2成员变量名字一样,就用子类自己的,名字不同之类没有就用父类的。
继承中成员方法的特点&方法的重写
子类没有方法就用父类
方法的重写:
在子父类中,子类的方法和父类的完全一样(覆盖),
当子类重写父类的方法之后,使用子类调用的就是子类的方法
使用场景:
当父类方法不能完全满足子类时,方法得重写既可以保留父类的功能,又可以让子类有自己的特有的东西
注意事项
不可以重写父类私有的方法
子类的重写权限,必须大于或等于父类
private<defult(默认)<protected
继承中构造方法的执行顺序
1在子类的构造方法中 如果没有调用父类的构造或者子类的构造,系统就会默认调用父类的无参构造。
就近原则:就是谁离的近就用谁
如果有局部变量就用局部变量
如果没有局部变量就先看子类的成员变量
如果子类的成员变量也没有,就看父类的成员变量
super和this用法像,super表示父类。
this和super的区别
this表示当前类的对象引用
调用自己的成员变量
调用自己的成员方法
在构造方法的第一行调用自己的其他方法
super:子类对父类的对象引用
调用父类的成员变量
调用父类成员方法
在子类构造方法第一行调用父类构造的方法
下面来就一个列子给大家演示一下
package gc;
/*分析以下需求,并用代码实现
1.定义项目经理类
属性:
姓名 工号 工资 奖金
行为:
工作work
2.定义程序员类
属性:
姓名 工号 工资
行为:
工作work
3.要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
编写测试类:完成这两个类的测试
*/
public class zy03062 {
public static void main(String[] args) {
manage a=new manage();
conder b=new conder();
a.work();
b.work();
}
}
abstract class baba{
private String name;
private String gender;
private int salary;
public baba() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public void work() {
System.out.println("努力工作");
}
}
class manage extends baba {
private String nationality;
public manage() {
}
public String getNationality() {
return nationality;
}
public void setNationality(String nationality) {
this.nationality = nationality;
}
public void work() {
System.out.println("经理分配工作");
}
}
class conder extends baba{
public void work() {
System.out.println("程序员努力工作");
}
}
class conder extends baba{}
这串代码中conder是子类
而baba是父类
用extends来链接
public void work() {
System.out.println(“努力工作”);
}
public void work() {
System.out.println(“程序员努力工作”);
}
第二串代码是也第一串是方法的重写,
都是work方法
在方法里面的输出语句必须要写与父类不同的方法
不然就会报错,就不是方法的重写
最后在测试类中进行方法的调用就行咯。