1.概念
- 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并扩展新的能力.
- Java继承是会用已存在的类的定义作为基础建立新类的技术
- 新类的定义可以增加新的数据或者新的功能,也可以使用父类的功能,但不能选择性的继承父类(超类/基类)
- 这种继承使得复用以前的代码非常容易,能够大大的缩短开发的周期,降低开发费用.
2.特点
- 使用extends关键字来表示继承关系
- 相当于子类把父类的功能复制了一份
- Java只支持单继承
- 继承可以传递(爷爷/儿子/孙子这样的关系)
- 不能继承父类的私有成员
- 继承多用于功能的修改,子类可以在拥有父类功能的同时,进行功能拓展
3.代码演示
package cn.tedu.demo2;
public class ExtendsTest1 {
public static void main(String[] args) {
Son1 son1 = new Son1();
son1.use1();
Son2 son2 = new Son2();
son2.use2();
Grandson gds = new Grandson();
gds.use3();
}
}
class Father{ //定义一个父类
public int a = 10;
private int b = 20;
public void print(){
System.out.println("Father类公有方法:"+"print()");
}
}
class Son1 extends Father{ 定义一个Son1类,继承Father父类
int a = 30;
public void use1(){
int a = 50;
System.out.println("局部变量:"+a);
System.out.println("成员变量:"+this.a);
System.out.println("Father类公有变量:"+super.a);
super.print();//调用父类公有方法
// System.out.println("父类私有变量:"+super.b);//不能调用父类私有变量
}
}
class Son2 extends Father{ //定义一个Son2类,继承Father父类
public void use2(){
System.out.println("调用Father父类");
super.print();
}
}
class Grandson extends Son2{ //定义一个Grandson类,继承Son2类,相对于是Father类的孙子类
public void use3(){
System.out.println("调用Father爷爷类");
super.print();//调用Father父类里的方法(对Crandson来说是爷爷类里面的方法)
System.out.println("调用Son2父类");
super.use2();//调用Son2父类里面的方法
}
}
结果显示:
局部变量:50
成员变量:30
Father类公有变量:10
Father类公有方法:print()
调用Father父类
Father类公有方法:print()
调用Father爷爷类
Father类公有方法:print()
调用Son2父类
调用Father父类
Father类公有方法:print()
4.super关键字
- super可以访问父类中public、default、protected修饰的成员变量,不能访问private修饰的成员变量。格式为super.成员名称。
- super可以访问父类中public、default、protected修饰的实例方法,不能访问private修饰的实例方法。格式为super.实例方法。
- super可以访问父类中public、default、protected修饰的构造方法,不能访问private修饰的构造方法,格式为super(参数).
5.重写规则
方法的重写(override)两同两小一大原则:
- 方法名相同,参数类型相同,
- 子类返回类型小于等于父类方法返回类型,
- 子类抛出异常小于等于父类方法抛出异常,
- 子类访问权限大于等于父类方法访问权限。
本文详细介绍了Java中的继承概念,包括如何使用`extends`关键字创建子类,以及Java单继承的特点。通过代码示例展示了如何在子类中访问父类的成员,并解释了`super`关键字的使用。同时,文章还阐述了方法重写(override)的规则,即两同两小一大原则。
869

被折叠的 条评论
为什么被折叠?



