基础之石——类的继承
前篇我们提到了类与对象之间的关系,那么类与类、对象与对象之间是否存在着一定的关系呢?比如说一对父母生下来一个小孩,在无突变异常的情况下,这个孩子的一条染色体来自于父亲,另一天则来自于母亲,那么这个孩子就会具有父亲或者母亲的某些基因特性。换句话说,这个孩子继承了父亲或者母亲的某一些特性。在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中父类可以自动转型为子类;当子类要转化为父类时需要强制转型。
相关推荐
在上一篇C++基础博文中讨论了C++最基本的代码重用特性——类继承,派生类可以在继承基类元素的同时,添加新的成员和方法。但是没有考虑一种情况:派生类继承下来的方法的实现细节并不一定适合派生类的需求,此时派生...
c#基础——关于类 c#基础——关于类 c#基础——关于类 c#基础——关于类
第8章动物类派生——继承与多态.ppt
基础会计学——帐户的分类PPT学习教案.pptx
关于程序设计的基础课件,包括计算机的硬件基础和c语言的有关内容。
基础会计学——第五章账户分类.pptx
主要介绍了C++类继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
c#面向对象——继承
新类可从现有的类中产生,将保留现有类的状态属性和方法并可根据需要加以修改。新类还可添加新的状态属性和方法,这些新增功能允许以统一的风格处理不同类型的数据。这种现象就称为类的继承。
基础知识之一——c++篇.docx
摄影基础知识分享——剪影
基础教程介绍——什么是SOA 基础教程介绍——什么是SOA .doc基础教程介绍——什么是SOA .doc
它山之石,可以攻玉——美国大学生建模竞赛之评审与评述.pdf
MFC课程复习——基础—— 概要 ————难点——