继承
1,含义,
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。多个类可以称为子类,单独这个类称为父类,子类可以直接访问父类中的非私有的属性和行为。
2,写法
通过 extends 关键字让类与类之间产生继承关系。
class父类
{
}
class子类 extends父类
{
}
3,作用
减少冗杂的代码,提高代码的复用性。
让类与类之间产生了关系,是多态的前提。在下一篇博客我会讲多态。
4,继承的特点
单继承
一个父类能有多个子类,但一个子类只能有一个父类,这叫做单继承。
关于继承内容
1.继承了成员属性
2.继承了成员方法(不包括被private修饰的)和静态方法(不包括被private修饰的)
ps,因为父类中private修饰的方法是父类独有的,不会被继承。
3.构造方法没有被继承。
继承中的关系
父类型引用指向子类型引用对象(为自动类型转换,向下转型)
Animal a=new Dog( );
package com.lfc.Java.Demo2;
public class Staff//父类
{
private String name;
private String type;
private int age;
public Staff() { }
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
}
class Manager extends Staff//第一个子类
{
private int yearmoney;
private String zhiwu;
}
class Clerk extends Staff第二个子类
{
private int monthmoney;
private String bumeng;
}
//Manager和Clerk都继承Staff,一个父亲两个儿子。
class Test1
{
public static void main(String[] args)
{
Staff manager=new Manager();
manager.setName("jingli");//调用了继承自Staff的setName()方法;
System.out.println(manager.getName());调用了继承自Staff的getName()方法;
Staff clerk=new Clerk();
clerk.setName("zhangsan");调用了继承自Staff的setName()方法;
System.out.println(clerk.getName());//调用了继承自Staff的getName()方法;
}
}
//private的属性子类无法直接访问,但可以通过方法父类提供的方法间接的访问。
//如上代码的name是父类的private属性子类,通过父类提供的getName()间接访问。
//父类的能力是有限的,子类拥有了父类的一些方法和属性之后,还可能满足不了需求。
//例如上面代码我们在Manager中还定义了yearmoney和zhiwu;
//在Clerk中还定义了monthmoney和bumeng,
//当然我们可以在Manager和Clerk中定义他们需要的方法,子类比父类更加强大。