继承
什么是继承
1.多个类中存在相同的属性和内容,那么我们就可以吧相同的得属性和行为存放在单独的类中,那么 那些类就不用每次单独的声明这些属性和行为了.
2.多个属性相同的类称之为子类,那个单独的类就称之为父类.
3.继承描述的事事物之间的所属关系, 比如讲师是员工----->讲师就是子类,员工就是父类
4.总的来说就是父类更通用子类更具体
继承的定义
继承就是:继承父类[非私有的]属性和行为,是的子类拥有相同的属性和行为.达到共性抽取效果
继承的优点
1.提高了代码的复用性
2.类与类之间形成一种联系 是多态的前提
继承的格式
通过extends关键字达到继承的目的
修饰符 class 子类 extends 父类(){}
public class A extends B(){}
示例代码:
//定义一个员工类
public class Employee{
String name; //姓名
int id; //工号
//定义一个员工工作方法
public void work{
System.out.println(name+"努力工作");
}
}
//定义讲师类,继承员工类
public class Teacher extends Employee{
//定义讲课方法
public void teach(){
System.out.println("教学");
}
}
//定义一个助教类继承员工类
public class Ta extends Employee{
//助教类
}
//定义一个测试类
public class Test{
public static void main(String[] args){
//创建一个讲师类
Teacher t=new Teacher();
//为该员工类的name属性赋值,
t.name="小张";
//调用该员工中的讲课方法
t.teach();
//调用teach中继承过来的work方法,虽然讲师类里面没有明确的写出来work方法,但是继承了员工类之后就默认有一个work方法
t.wokrk();
//使用助教里面继承的属性和方法方法
ta.name="如意";
ta.work();
}
}
解释:就是说子类对象可以使用父类里面的非私有的属性和方法,也能给他们赋值和写方法实现体,这就达到在子类重写弗雷方法的时候就能重写方法的实现体,达到不同的子类方法实现体效果不一样
继承的成员变量特点
1,.子类成员变量名和父类成员变量名不重名的时候,访问就没有影响
public class Fu{
int num=10;
}
public class Zi extends Fu{
int num1=20;
//定义成员方法
public void show(){
//这个时候属性的引用是不会出现问题的因为成员变量名不一样
System.out.println("父类中的参与变量:"+num);
System.out.println("子类中的成员变量:"+num1);
}
}
2,.子类成员变量名和父类成员变量名重名的时候,访问就有影响
public class Fu{
//定义父类中的成员变量
int num=10;
}
public class Zi extends Fu{
intn num=20;
//定义成员方法
public void show(){
System.out.println("父类中的参与变量:"+num);
System.out.println("子类中的成员变量:"+num);
}
}
public class Test2{
public static void main(String[] args){
//创建子类对象
Zi zi=new Zi();
//调用子类方法
zi.show();
}
}
备注:在父子类继承关系中,如果成员变量重名了,则创建子类对象时候访问有两种方式;
1.直接通过子类对象访问成员变量 new 类名() new的哪个类对象,就先调用谁的,没有再向上去找父类里面的
2.通过方法调用,例如子类里面的方法调用属性的时候如果属性重名肯定先使用子类里面的属性