java中继承的理解,为什么要继承,怎么使用继承

继承
本章目标:
1.继承
1.1 什么是继承?
1.2 为什么要继承?
1.3 如何使用继承操作?
1.4 父类中哪些是子类所不能继承的?
2.super
2.1 子类如何访问父类的属性和方法?
2.2 super的三种结构
2.3 super()的应用及注意事项
3.重写
3.1 什么是重写?
3.2 为什么要重写?
3.3 什么情况下才能重写?
3.4 如何重写?
4.挑战:掌握继承状态下父类、子类构造方法、static代码块、代码块的执行顺序

具体讲解:
1.继承
1.1.什么是继承?
(1)现实生活中的继承

现实生活中继承指的是对象与对象的继承关系。

(2)程序中的继承

继承是面向对象编程(OOP)的三大特征之一。

继承的概念:
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

程序中的继承是指类与类之间的继承关系。
Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(或叫基类、超类)。

继承关系的梳理:
父类和子类的关系是一种一般与特殊(is-a)的关系。
举例:水果(Fruits)和苹果(Apple)的关系
苹果继承了水果,苹果是水果的子类,则苹果是一种特殊的水果。

1.2.为什么需要继承?
(1)提高代码的重用性。
(2)优化代码,方便修改。
(3)类与类之间产生了关系,是多态的前提。

1.3.如何使用继承操作?
(1)继承的格式
通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:
class 父类 {

}

class 子类 extends 父类 {

}

继承演示代码如下:
//员工类
class Employee{
private String name; //姓名
private int age; //年龄
private double salary = 5000.0; //薪水
public Employee(){}
public Employee(String name, int age, double salary){
this.name = name;
this.age = age;
this.salary = salary;
}
public double getSalary(){
return salary;
}
}

//经理类继承自员工类
class Manager extends Employee{
private double bonus; //奖金
public void setBonus(double bonus){
this.bonus = bonus;
}
}

//测试类
public class Test{
public static void main(String[] args){
Manager manager = new Manager();
double sal = manager.getSalary();
System.out.println(“继承的薪水为:” + sal);
}
}
1.4.父类中哪些是子类所不能继承的?
(1)私有化的,即用private修饰的成员变量和成员方法。
(2)构造方法。
(3)子类与父类不在同一个包中,父类使用默认访问权限的成员变量和成员方法。

1.5.继承的其他特点
(1)单继承
Java中只支持单继承,不支持多继承。
Java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良。

为什么不支持多继承呢?
因为当一个类同时继承两个父类时,两个父类中有相同的方法,那么子类对象调用该方法时,运行哪一个呢?

(2)多重继承(继承体系)
Java支持多重继承,例如:
class A{}
class B extends A{}
class C extends B{}
多重继承的出现,就有了继承体系。体系中的顶层父类是通过不断向上抽取而来的。

(3)继承关系下,子类与父类的成员变量同名会有什么影响?
同名看实例化对象是哪个类就以哪个类中的成员变量值为准。
举例:如果new的是子类,则以子类中的值为准;
如果new的是父类,则以父类中的值为准。

(4)继承关系下,子类与父类的成员方法会有什么影响?
调用成员方法,先在子类中查找是否有该方法,有就执行,没有就去父类中查找执行。
父类中没有则直接报错。

2.super
2.1.子类如何访问父类的属性和方法?
(1)super.属性名
(2)super.方法名()
2.2.super的三种结构
(1)super.属性名
访问父类的属性: super.name;

(2)super.方法名()
访问父类的方法: super.print();

(3)super();
调用父类构造方法:super(name,age);
注意:该句只能出现在子类构造方法中的第一行。
2.3.super()的应用及注意事项
(1)super()出现在子类构造方法,表示调用父类的构造方法。
(2)如调用父类带参构造方法,则用:super(参数列表);
(3)super()只能出现在子类构造方法中的第一行。
2.4.super与this

3.重写
注意:重写的前提是类之间具有继承关系。
3.1.什么是重写?
重写也称覆盖,是在继承关系下,子类对父类方法代码的修改。
举例:动物类(Animal)中的吃方法(eat),有些动物吃草,有些动物吃肉,都是吃的功能,但是动物不一样,实现的方式也不一样。
3.2.为什么要重写?
(1)父类已具有某个功能的方法,子类假如有相同功能的方法,使用重写的方式更加便利,不会造成子类既继承得到了父类的这个功能,又自己拥有一个同样的功能而方法名却不一样的尴尬境地。
(2)继承是多态的前提,重写方法也是为了多态的扩展性的。
3.3.什么情况下才能重写?
当子类跟父类拥有相同的功能,但是实现方式不同时,子类重写父类的方法即可。
3.4.如何重写?
方法的重写要遵循“两同两小一大”的原则:
两同:方法名和参数列表必须相同
两小:返回值类型、声明异常 比(被重写的)父类的小(或一样)
一大:访问修饰符比(被重写的)父类的大(或一样)

示例:
public class Father {
public Father method(){
return new Father();
}
}
public class Sun extends Father {
@Override
public Sun method() { //两同:方法名和参数列表相同
// TODO Auto-generated method stub
return new Sun();
}
}

4.挑战:掌握继承状态下父类、子类构造方法、static代码块、代码块的执行顺序
执行顺序如下:
(1)父类的静态代码块
(2)子类的静态代码块
(3)父类的代码块
(4)父类的构造方法
(5)子类的代码块
(6)子类的构造方法

	父类属性 > 父类构造方法 > 子类属性 > 子类构造方法
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Java继承是指一个类可以从另一个类继承属性和方法。被继承的类称为父类或超类,继承的类称为子类或派生类。子类可以继承父类的所有非私有属性和方法,并且可以在此基础上添加自己的属性和方法。 使用继承的好处包括: 1. 代码复用:子类可以继承父类的属性和方法,避免了重复编写代码的工作。 2. 提高代码的可维护性:当需要修改父类的属性或方法时,只需要在父类进行修改,所有继承自父类的子类都会受到影响,从而提高了代码的可维护性。 3. 提高代码的可扩展性:子类可以在父类的基础上添加自己的属性和方法,从而扩展了代码的功能。 4. 提高代码的可读性:继承可以使代码更加简洁明了,易于理解和阅读。 ### 回答2: Java继承是指子类继承父类的属性和方法,并且可以在此基础上扩展或修改。继承是一种面向对象编程的重要机制,通过它可以简化代码、提高代码复用性、提高代码的可维护性和可拓展性。 继承是一种基于类的机制,一个子类可以继承一个父类的所有非私有成员变量和方法,包括公有、受保护和默认的成员。子类可以通过继承来获得父类的方法和属性,而且可以在子类进行扩展和改写,实现代码的重用和简化。 使用继承的好处有以下几个方面: 1. 代码重用:继承允许子类在不重新编写原始代码的情况下重用父类的一些功能和方法,节省了开发时间和代码量。 2. 扩展和修改:子类可以通过继承获得父类的方法和属性,并在此基础上进行扩展和修改,实现了代码的增强和拓展。 3. 简化代码:继承可以实现代码的重用,避免了重复编写相同功能的代码。 4. 提高可维护性和可拓展性:继承可以使代码更加灵活和可维护,当需求发生变化时,可以方便地进行修改和扩展。 除了上述好处之外,继承还有一些需要注意的问题。首先,继承可能导致紧密耦合的问题,即子类与父类之间相互依赖,一旦父类代码发生改变,子类也需要随之改变。其次,继承可能导致类之间的混淆,尤其是在继承链过于深的情况下,代码结构可能变得比较复杂和难以理解。 ### 回答3: 继承Java语言的一种重要的面向对象编程特性,它允许一个类(子类)从另一个类(父类)那里继承它的属性和方法。在继承,子类可以获得父类的所有非私有属性和方法,包括成员变量和成员方法,同时子类还可以添加自己的属性和方法以及重写父类的方法。 使用继承的好处是可以大大提高代码的复用性和可维护性,减少代码冗余,提高程序的可扩展性和可继承性。同时,继承也可以使得程序的结构清晰、易于理解和维护,提高程序的可读性和可维护性。 在实际应用继承可以用来构建一个类的层次结构,其子类从父类继承了一些通用的属性和方法,而子类的特殊属性和方法则可以自己定义。这种使用方法可以极大地简化程序的结构和代码,减少代码复制和粘贴,同时也可以减少错误和代码的维护难度。 除了基本的继承Java还提供了接口继承和多层继承等高级用法。接口继承允许一个类实现多个接口,从而实现了多重继承的功能。多层继承则允许一个类继承另一个类的子类,层级结构非常复杂,但可以帮助程序员更加灵活地构建程序结构。 总之,继承Java语言非常重要的一个特性,可以提高程序的可维护性和可扩展性,同时也可以帮助程序员更加灵活地构建程序结构和设计算法。程序员可以根据自己的需求和情况,使用继承来构建更加优雅、简洁和易于维护的程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值