基础之石——类的继承
前篇我们提到了类与对象之间的关系,那么类与类、对象与对象之间是否存在着一定的关系呢?比如说一对父母生下来一个小孩,在无突变异常的情况下,这个孩子的一条染色体来自于父亲,另一天则来自于母亲,那么这个孩子就会具有父亲或者母亲的某些基因特性。换句话说,这个孩子继承了父亲或者母亲的某一些特性。在JAVA中,继承是复用程序代码的有力手段。如果现在我需要定义一个博美狗类,博美狗具有所有狗所具有的属性和方法。此时我们采用继承的手段来使博美狗获得犬类具有的所有属性和方法。
/** * 定义一个Pom类,继承Dogs类 * @author Daily * */ public class Pom extends Dogs{ // 类与类的继承的关键字为:extends // 定义博美的特定属性 public String another_name; // 别称 /** 主函数 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Dogs pom = new Pom("David"); // 类向上自动转型 pom.age = 1; pom.location = "Germany"; pom.sex = "male"; pom.weight = 3; pom.eating(); pom.walking(); pom.sleeping(); Pom pom1 = new Pom("Cute"); pom1.age = 2; pom1.location = "Germany"; pom1.sex = "female"; pom1.weight = 2; pom1.another_name = "fox_dog"; pom1.weightLimit(pom1); pom1.eating(); pom1.walking(); pom1.sleeping(); Pom pom2 = (Pom)new Dogs(); // 类向下强制转换 pom2.age = 2; pom2.location = "Germany"; pom2.sex = "female"; pom2.weight = 2; pom2.another_name = "fox_dog"; pom2.weightLimit(pom1); pom2.eating(); pom2.walking(); pom2.sleeping(); } /** * 构造方法重载 * @param name 博美的名字 */ public Pom(String name){ this.name = name; System.out.println("我出生的时候,也得到了名字哦~~~看我多了不起。。。"); } /** * 判断博美狗的体重的方法 * @param p 特定的博美狗 */ public void weightLimit(Pom p){ if (p.weight < 3.5){ System.out.println("我是博美,我很瘦哟~~~"); } else { System.out.println("哈哈~被骗了吧?我可不是博美哟~~~"); } } /** * 覆盖掉Dogs原有的walking方法 */ public void walking(){ System.out.println("我是小短腿,在公园里跑跑就好啦~~~主人别让我走快呀!"); super.walking(); // Dogs类中的walking方法 } }
1、JAVA中不支持多继承,即一个类只能直接继承一个类。类的继承具有向上传递性,即一个类可以有多个间接的父类。以上例,Dogs类直接继承了Animal类的所有属性与方法,Pom类直接继承了Dogs类的所有属性与方法,所以Pom也会具有Animal类的所有属性与方法,也就是说Pom间接继承了Animal类的所有属性与方法。
2、有时候,类的同一种方法功能有多种实现方式。上例中Pom的默认构造方法为Pom();我们将其方法进行覆盖和重载,得到了Pom(Pom p)这一新的构造方法。
注:
方法重载必须满足的条件:a.方法名相同;b.给定的参数类型或者参数个数或参数顺序不同;
c.方法返回值类型可以不同;d.方法修饰符也可以不同。
方法覆盖:重写定义父类所给的方法。
3.super关键字可以调用父类的方法,即使其已被覆盖。
4.多态:JAVA中父类可以自动转型为子类;当子类要转化为父类时需要强制转型。
相关推荐
小数既吸收了自然数十进制的优势,同时具备了分数等分的思想,因此可以把它看作是一类特殊的分数,也可以看作是自然数的继承和细分。小数除法的算理与加法和减法有相似之处,都是对计数单位的累加、减少与细分。但是...
2. **装饰类**:继承自基础形状类,添加特定的装饰元素,如星星或彩灯。 3. **颜色类**:允许用户自定义树的颜色,通过继承来扩展基础颜色设置。 通过多继承,我们可以组合这些特性,创建出一个功能丰富的圣诞树...
1. **接口声明**:接口使用`interface`关键字定义,与之对应的是使用`class`关键字定义的类。 2. **抽象方法**:接口中的方法默认是抽象的,即没有具体的实现。尽管`abstract`关键字不是必需的,但通常会被省略。这...
本章介绍了C++中的继承和多态性概念,包括基类与派生类的关系、继承的访问控制、覆盖方法、构造函数、多态性基础、虚函数、纯虚函数以及抽象类的概念。此外,还讨论了多重继承及其解决方案——虚拟继承,以应对复杂...
此外,`java.txt`可能包含了关于Java语言基础和进阶概念的文本资料,涵盖变量、数据类型、控制结构、类与对象、继承、多态等核心概念。这些内容对于理解和掌握Java编程至关重要。 通过"Java JDK 6学习笔记——ppt...
实验项目还包括对基础知识的回顾,如类与对象、继承与派生、多态性,以及简单的应用实例如图书馆管理(实验项目3)和计算器(实验项目4)。通过这些基础项目,学生可以逐步建立起对面向对象编程的理解,为完成陨石撞...
包括类的定义、对象的创建、继承、封装和多态等面向对象编程的概念。 2. **图形用户界面(GUI)**:为了呈现游戏界面,开发者使用了Java的Swing或JavaFX库来创建图形界面。这涉及到组件的添加、布局管理器的使用...
### SCJP Java基础——面向对象知识点详述 #### 知识点1:面向对象的基本概念 **面向对象**是一种软件开发技术,它将程序中的数据和操作这些数据的函数捆绑在一起形成一个整体,即对象。这种捆绑称为**封装**。...
2. **继承**:继承允许创建一个新类(子类或派生类),它从现有类(父类或基类)继承属性和行为。这促进了代码重用和类层次结构的构建。 3. **多态**:多态性使子类能够覆盖或扩展父类的方法,实现不同的行为。动态...
2. **继承**:继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而支持代码复用。这不仅减少了重复代码,还使得类之间的关系更加清晰。 3. **多态**:多态性允许子类对象可以被视为其父类的对象,即一个...
- 原材料:瓷器使用瓷石或瓷土,陶器则多用粘土。 - 烧制温度:瓷器需在更高温度下烧制,陶器较低。 - 质地与吸水性:瓷器质地紧密,不透水,陶器较为疏松,有一定吸水性。 3. 瓷器的发展历程: - 商代出现原始...
《陨石撞飞机小游戏——基于C++的MFC界面与游戏编程初探》 在IT领域,游戏编程是一项富有挑战性和趣味性的技能,它融合了计算机科学、图形设计和用户体验等多个方面。今天我们要探讨的是一款名为“陨石撞飞机”的小...
OPhone平台2D游戏引擎实现——物理引擎(一) OPhone平台开发, 2010-10-19 17:27:20 标签 : Ophone平台 2D 游戏 引擎 上一篇文章我们介绍了常见的各种游戏特效的实现,你现在可以很轻松的实现各种游戏中所需要...
文章接下来转向更复杂的主题——继承。通过定义`C014`类从`C011`继承,文章探讨了基类与派生类之间的内存布局关系。当涉及虚函数时,文章解释了虚函数表(vtable)的概念,即一个指向所有虚函数的数组。每个具有虚...
其次,继承是OOP的关键特性之一,允许创建新类并从现有类继承属性和行为。在C++中,继承是多重的,即一个类可以继承多个基类。Java也支持多重继承,但通过接口实现,避免了C++中可能出现的钻石问题。Object Pascal的...
4. 继承:可能有一个基础的“游戏”类,然后石头-剪刀-布子游戏类继承自它,以复用和扩展游戏逻辑。 5. 多态:游戏规则可以通过接口或抽象类实现,允许不同的游戏策略。 Kotlin是Google支持的Android开发首选语言,...
本书详细介绍了支持C++面向对象编程的底层机制:构造函数语义、临时对象生成、封装支持、继承以及“虚拟性”——虚函数和虚继承。通过理解这些实现模型,读者可以更高效、更有信心地编码。利普曼澄清了关于C++开销和...
总的来说,这个实验提供了一个基础的银行账户管理系统的设计和实现,通过`User`和`Bank`两个类,展现了面向对象编程的核心思想——封装和继承。在这个系统中,`User`类封装了账户数据,而`Bank`类则提供了操作这些...
实验的目的是让学生理解和掌握Java基础的并发程序设计方法,包括Runnable接口的使用、Thread类的创建以及多线程同步锁的应用。 在第一个实验中,为了确保不会卖出重复的电影票,采用了Java的并发控制机制——...
学生将学习如何通过继承`threading.Thread`类,重载`run`方法来创建多线程,并运用Python的线程同步机制——锁(Lock),以确保并发执行过程中的数据一致性。 实验内容: 1. 四个售票窗口同时出售30张电影票。 2. ...