前言:
继承是面向对象语法的三大特征之一。继承可以降低代码编写的冗余度,提高编程的效率。通过继承,子类获得了父类的成员变量和方法。一个子类如何继承父类的字段和方法,如何修改从父类继承过来的子类的方法呢,今天我们开始学习有关Java继承的知识。
生活中的继承:
生活中有很多继承关系:像是父亲留下的资产,儿子可以继承,当然孙子也可以(只要还有)。
Java中的继承:
Java继承中只能单继承,一个子类只能有一个父类,一个父类可以有多个子类,也可以进行多重继承
java的三大特性:封装,继承,多态
继承是类与类之间的关系
继承的语法格式:
class B extends A {
}
案例解析:
package com.qfedu.test;
class Animal{ //定义一个动物类作为父类
String kind; //定义成员属性
public void eat() { //定义一个成员方法
System.out.println("动物都要吃食");
}
}
class Tiger extends Animal { //写一个Tiger类去继承动物类
@Override
public void eat() { //重写了父类的方法
System.out.println("老虎吃肉");
}
}
public class Test {
public static void main(String[] args) {
Tiger tiger = new Tiger(); //创建Tiger对象
tiger.kind = "华南虎";
System.out.println(tiger.kind);
tiger.eat(); //调用eat方法
}
}
输出结果:
华南虎
老虎吃肉
继承的优点:
- 继承过来的字段和方法,可以像任何其他字段和方法一样被直接使用;
- 在子类中可以声明一个与父类中同名的新字段或静态方法;
- 可以在子类中声明一个在父类中没有的新字段和方法;
- 继承可以降低代码编写的冗余度,提高编程的效率。
什么是重写?:
重写的目的:
当在继承的过程中,子类继承父类中的方法时,父类中方法不能够满足子类的需求时,就需要重写父类的方法,去给子类使用。
重写的要求:
1.必须要有继承关系
2.父类的方法必须是非私有化的
3.在子类中重写父类的方法时,这个方法除了方法体不同其他的都相同
4.必须在子类中去重写
案例:
class Father {
public void eat () {
System.out.println("吃粗粮。。。。。。");
}
public void driver () {
System.out.println("开拖拉机。。。。。");
}
}
//当父类不能满足子类的需求的话可以在子类中重写父类的方法
class Son extends Father {
//重写的时候在子类中 只需要打上方法的名字一敲回车即可
//重写的方法 和父类 的 返回值 参数 方法名字 一模一样,但是方法体不一样的
@Override//是重写的严格限定,只要有这个,就证明咱们下面的这个方法
//就是重写的方法,告知程序员 此时eat方法是重写的不是自己独有的
public void eat() {
System.out.println("吃白面馒头......");
}
@Override
public void driver() {
System.out.println("开小汽车");
}
}
public class Demo1 {
public static void main(String[] args) {
Son son = new Son();
son.eat();
son.driver();
//重写的话,是不影响父类的方法的
Father father = new Father();
father.eat();
father.driver();
}
}
什么是重载?:
重载的定义:
在java同一个类中可以有好很多种方法,方法名相同,但参数以及个数不同的方法就可以叫做方法的重载。
重载的要求:
1.方法的重载必须在同一个类种
2.方法名字必须一致
3.方法的参数类型必须不一样
4.方法的返回值可以不一样
5.无参构造跟有参构造也是一种重载
案例:
class Person {
//在一个类中,方法法名字一样,但是参数一定不一样。这叫方法的重载
//返回值可以不一样
public void test () {
System.out.println("test");
}
public void test (String name) {
System.out.println(name);
}
public void test (int i) {
System.out.println(i);
}
void test (double d1) {
}
public String test(String str1, String str2) {
return str1 + str2;
}
}
public class Demo3 {
public static void main(String[] args) {
}
}
重写与重载的区别:
方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写 Overriding 是父
类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。如果在子类
中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象
使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一
个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重
载(Overloading)
总结:
总的来说在Java的继承是很重要的,在以后会广泛被用到,希望这篇总结能够帮助大家更好的了解继承 。 谢谢!