下面来看一个实例,通过这个实例我们可以初步认识类的继承这个现象:
假设我们要给一个教育部使用的学生管理系统,那么从教育部出发,所有的学生(无论大中小)都可以是一种类型的,即定义为一个简单的Student类:
//所有一般学生的定义
public class Student(){
//学生名字设定及获得方法
private String name;
public void setName(String name){
this.name= name;
}
public String getName(){
reutrn name;
}
//每个学生都有学习的方法
public void study(){
System.out.println("Student类中的学习方法,学生名字是"+name);
}
}
可是,当我们把这个系统给某个大学生使用时,明显有一定的局限性,我们需要再定义一个大学生类,可是,大学生类里面一样会有学习的方法和学分,名字属性,但其学习方法和一般学生是不同的!可是,如果我们为了大学生另外编写一个类的话,又会早成一定的不便,因为实际上大学生也是学生这个类里面的,所以这时候,我们就需要用到类的继承这个概念来实现对大学生这个特殊的学生类的编写
public class UNStudent extends Student(){ 我们称“UNSudent继承了Student类”,就将UNStudent称为Student的子类,Student叫做UNStudent的父类,UNStudent中就自动具有了Student中定义的属性和方法(如左边下半段代码)
}//子类 extends 父类:继承格式
//程序入口
public stastic void mian(String[] args){
//创建大学生类的对象
UNStudent uns=new UNStudent();
//调用方法:这些方法是从父类中继承来的
uns.setName("我是大学生");
uns.study;
}
从中我们看出了继承的必要性,也就能够回答出我们的问题
1.为什么需要使用继承
• 提高代码的重用性 :如上所示可以看出,类的继承使得Student类中的代码在UNStudent类中得到重复使用,提高代码的重用,也增大其使用价值
提高代码的扩展性 :在提高重用性的同时增加了其扩展领域
既然知道了继承的作用,那么:如何继承呢?
2.继承的语法格式
继承 的关键字: Extends
格式 :Public class 子类名 extends 父类名{
}
子类中可以使用父类中一些属性和方法(注意:不是全部!)
3.子类继承到父类的那些属性和方法
父类 继承 子类 子类继承了父类所有访问修饰符的属性和所有访问修饰符的方法(构造方法)
java中的访问修饰符有: Private,protected,public,默认的
子类和父类在同一包里能调用的属性和方法有: public,protected,默认的属性和方法可以被子类和子类的对象调用
子类和父类不在同一包下是能调用的属性和方法有
1. public的属性和方法能被子类和子类的对象调用
2. protected的属性和方法能在子类的{}里面调用
子类中同样可以使用自己重新定义 的方法,对于重新定义父类中方法的现象,我们称之为方法的重写
4.方法的重写(OverWrite)
重写的条件 1. 必须要存在继承关系
2. 返回类型,方法名,参数个数,参数类型,参数顺序必须要和父类完全相同
3. 子类的重写方法是的访问修饰符可以大于或者等于父类的访问
修饰符大小:public>protected>private
关于调用 • 子类重写父类的方法,优先使用子类中重写的方法,但前提是实例化的对象是子类的
(这就像你花钱时,如果你自己实现了工作的方法,花的是自己的钱,否则,花的肯定是你从父亲那里继承来的钱)
//继承Student类 //再来调用
public class UNStudent extends Student(){ //程序入口
//重写继承自父类中的方法 public static void main(String[] args){
public void study(){ //创建大学生类的对象
System.out.println("UNStudent要学习,要独立 名 字"+getName()); UNSudent uns=new UNStudent();
} //调用方法:这些方法是从父类那里继承来的
} uns.setName("我是大学生");
uns.study();
}
输出结果: UNStudent要学习,要独立,名字 我是大学生
5.自动转型(指的是子类对象会自动转变为父类类型)
//程序入口
public static void main(String[] args){
//父类类型变量名用来引用子类对象(注意:类的继承中自动转型的标志)
Student uns= new UNStudent();
/调用从父类中继承来的方法
uns.setName("我是大学生");
uns.study();
}
注意,上例中使用了Student类型的变量指向(引用)一个UNStudent对象,这只有当UNStudent是Student子类(或孙子类)时成立,反过来是不成立的
特别注意
• 子类对象自动转型为父类类型时,通过父类类型变量的引用,只能调用自己在父类中定义的方法,不能调用子类中自己定义的方法(缺点);
• 在java中,子类一次只能继承一个父类,即单根继承
自动转型 1. 前提,存在继承关系(是子类的对象向父类转型)
2. 格式:父类名 对象名= new 子类的构造方法();
强制转型 Student un=new UNStudent();
UNStudent uns =(UNStudent)un;(不行)
• 优点 :提高代码的重用性
• 无法调用子类中定义的方法(不是重写)
6.多态
多态 对象的不同表现形态
关于多态的问题,会在接下来的博文里面详细介绍……
分享到:
相关推荐
在Java编程语言中,`extends`关键字用于实现类的继承机制。类的继承是面向对象编程的一个核心特性,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的复用和扩展。下面将详细探讨`extends`...
1. **类的继承**:在Java中,继承是面向对象编程的重要特性,允许一个类(子类)继承另一个类(父类)的属性和方法。例如,我们可以创建一个`Music`类作为其他音乐相关类的基类。 2. **构造方法**:构造方法用于...
在这个特定的程序中,我们看到了一个关于Java继承的实例,它演示了子类对象初始化时涉及的各个步骤,包括构造方法、初始化值、父类构造方法以及父类的初始化值。 首先,我们有一个名为`Parent`的父类,它有两个实例...
Java内部类继承问题的分析主要关注的是在Java编程中,当内部类(也称为嵌套类)参与继承时所面临的挑战和潜在问题。Java语言采用了单一继承机制,即一个类只能从一个父类继承,这有助于提高代码的可读性和可维护性。...
Java 类的继承是其面向对象特性中的核心概念之一,它为代码重用和构建复杂的软件结构提供了基础。在 Java 中,一个类可以扩展另一个类的功能,这个被扩展的类被称为父类(或超类),而扩展的类则称为子类(或派生类...
在Java编程语言中,类的继承是面向对象编程的一个核心概念。这个实例是关于如何在超市购物场景下应用继承机制的。在这个系统中,我们有以下几个关键类:`ShoppingCar`(购物车)、`Database`(数据库)、`McBean`...
这个例子展示了Java继承的核心概念,包括: 1. 使用`extends`关键字创建子类。 2. 访问和覆盖父类的方法。 3. 添加子类特有的方法。 4. 多态性的应用。 通过学习这个实例,开发者能够更好地理解和运用Java的继承...
在Java编程语言中,类的继承是面向对象编程的一个核心概念,它允许我们创建新的类(子类)基于已存在的类(父类或超类)。继承提供了代码的复用性,使得子类可以共享父类的属性和方法,同时还可以添加自己的特定功能...
Java中的类与继承是面向对象编程(Object-Oriented Programming, OOP)的核心概念,它们在构建复杂的软件系统中起到至关重要的作用。面向对象编程是一种编程范式,它基于对象和类的概念,通过继承、封装和多态等特性...
java类和对象继承多态性是java语言中的一种基本机制,它允许开发者创建一个新的类,并继承已有的类的属性和行为。这种机制可以提高代码的复用性和维护性。 继承是java语言中的一种机制,通过继承,开发者可以创建一...
本资源摘要信息是关于 Java 中继承和多态的题目,涵盖了面向对象编程的基本概念和继承机制的应用。 继承的概念 继承是面向对象编程的一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。继承的目的是...
Java中的继承和接口是面向对象编程的关键特性,它们在软件设计中扮演着至关重要的角色,实现了代码的重用和类的层次结构。 继承是Java中创建新类的一种方式,它允许一个子类(SubClass)从一个已存在的父类...
JavaIO类InputStream/OutputStream继承关系图,使您对IO类一目了然
了解这些概念后,我们可以看到`GenericClass.java`文件可能包含了关于如何创建和使用继承泛型类的实际代码示例。而`Java.jpg`可能是用于辅助解释的图像,比如类结构图或代码截图。在实际学习过程中,结合代码和图像...
在Java中,一个类只能直接继承一个父类,但可以通过多重继承(接口)来模拟多重继承的效果。 **多态(Polymorphism)**是面向对象的三大特性之一,它允许我们使用父类型引用指向子类型的对象,从而实现不同对象对...
在本实验报告中,我们将深入探讨Java编程中的两个核心概念:类的继承和多态的应用。实验主要目标是加深对抽象类和抽象方法的理解,并掌握如何在实际编码中实现类的继承以及多态性。 首先,让我们理解抽象类和抽象...
通过`java_中关于_继承_的一个小例子.docx`文档,可能包含了更详细的示例代码、解释或者练习题,旨在帮助学习者深入理解和掌握Java中的继承概念。在实际编程中,继承被广泛应用于构建层次化的类结构,如在游戏开发中...
在这个代码集中,我们很显然会看到一系列关于如何创建和使用Java类以及实现继承的示例代码。以下是对这些概念的详细解释: 1. **Java 类**: - 类是Java中的蓝图或模板,用于创建具有相似属性和行为的对象。在Java...
定义两个类Dog,SmallDog,SmallDog继承Dog 说明一:关于Dog 两个属性,狗的名字(dogName,String),狗的年龄(dogAge,int) 一个方法,dogWalk(),打印一句话简单描述狗走路的样子 一个构造方法,无参数,在此构造方法...
(2)学生类Student继承Person,增加了学号信息,有两个构造方法Student()和Student(姓名,性别,年龄,学号),调用父类Person的构造方法对父类部分进行构造,在Student()中,默认学号为空字符串,在Student...