JAVA三大特性之——继承
这里我们主要对继承的目的概念进行讲解,用代码来进行说明。文章内容还包括public private default protected区别、单继承、创建实例时子类和父类之间的理解、this和super的使用区别、向上转型等等。
1.什么是继承(inheritance)
继承 关键词:extends
指面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承显现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。简而言之就是子类继承了父类的所有的属性和方法。
父类又名(基类或超类),子类又名派生类
2.继承的目的:
为了代码重用和类的重用
3.继承的特点
单继承:Java中一个子类只能继承一个父类,不能进行多继承
正确形式:
咖啡色
小狗
动物
4.继承的主要语法规则
- 使用extends让新建的子类指向父类(形如pulic Apple extends Fruits);
- Java中一个子类只能继承一个父类(形如上图所示);
- 子类会继承父类中的所有的public的属性和方法,private的字段和方法无法访问继承;
- 创建子类的实例时,会先创建一个父类实例,可以使用super关键字的到父类实例的引用;
5.继承时super和this的区别
super | this |
要有继承关系才可以使用 | 不需要继承关系 |
访问父类的属性 | 访问本类的属性,本类没有,则从父类中继续查找 |
访问父类中的方法 | 访问本类的方法,本类没有,则从父类中继续查找 |
调用父类构造,必须放在构造方法的首行 | 调用父类构造,必须放在子类构造方法首行 |
super.变量(调用父类的变量) | this.变量(调用当前对象的变量) |
super(参数)方法(确认要使用父类的哪一个) | this(参数) |
6.继承的具体实现
代码实现如下:
首先定义一个父类,构建其构造方法和属性
class Animal{
public String name;//定义一个变量
public Animal(String name){//父类的构造方法
this.name=name;
}
public void eat(String food){//定义一个方法
System.out.println(this.name+"正在吃"+food);
}
}
定义一个子类进行继承
class Cat extends Animal{//用extends来继承父类
public Cat(String name){//传参数接收name
super(name);//用super调用父类的属性
}
public void fly(String 状态){//定义一个父类的方法
System.out.println(this.name+"正在"+状态+"飞");
}
}
最后用一个main函数实现打印输出
public class testago {
public static void main(String[] args) {
Cat cat = new Cat("啾咪");//对子类实例化实例化
cat.fly("自由自在地");//调用子类的fly方法,将String定义的“类型”参数定义
cat.eat("好吃的");//同fly方法
}
}
7.关于继承中使用的关键字范围
private
default(一般默认为default)
protected
public
适用范围
范围 | private | default | protected | public |
同一包中的同一类 | √ | √ | √ | √ |
同一包中的不同类 | √ | √ | √ | |
不同包中的子类 | √ | √ | ||
不同包中的非子类 | √ |