- 热门文章:
- · Interlude之深入浅出OOD(一)
- · 再说面向对象
- · OOP & OOD 及其模型
- · 面向对象的软件测试
- · 面向对象的分布式开发系统-理论篇(2)
- · 面向对象的分布式开发系统-理论篇(1)
- · 分布对象技术的新进展
- · 一个OO设计的命运
- · OO给我们带来了什么?
- · 了解AOP
- · 面向对象技术应用:并发面向对象技术
- · 信息系统建模方法
简单的理解类的继承和多态性
* Created on 2004-8-31
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author diyer6
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/*
类的继承
1、在java中通过关键字 extends 继承一个已有的类,被继承的类成为父类(基类),新的类
称为 子类(派生类)。
2、在java中,不允许多继承。
3、在子类中定义一个与父类同名、返回类型、参数类型均相同的一个方法,称为方法的 覆盖。
4、覆盖 发生在子类与父类之间。
5、特殊变量super 提供了对父类的访问。
6、可以使用super 访问父类被子类隐藏的变量和覆盖的方法。
7、每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有构造方法,
那么在编译的时候就会报错。
多态性
1、通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。
2、简单概括多态性:当我们将子类对象的引用传给声明为父类的一个对象变量,如果子类有
这个方法就调用子类的方法,如果子类没有这个方法就调用父类的这个方法。
3、多态性的好处:它可以根据在运行的时候,根据我们传递不同对象的引用,
来调用不同对象的方法。
*/
public class Animal { //父类
int height,weight; // 变量(数据)
Animal(int height, int weight)//父类的构造方法 (带参数的父类构造方法)
{
System.out.println("animal construct");
}
void eat() //父类的方法
{
System.out.println("animal eat");
}
void sleep()//父类的方法
{
System.out.println("animal sleep");
}
void breathe()//父类的方法
{
System.out.println("animal breathe");
}
}
class Fish extends Animal { //子类 关键字 extends 使 Fish 继承了 Animal 的 变量和方法
int height;//子类的变量 ,在调用时会隐藏父类的变量。
Fish()//子类的构造方法
{
super(30,40);//利用 super 调用带参数的父类构造方法。
//不能Animal(30,40)这样直接调用父类构造方法。只能用super()调用。
//父类的构造方法不能被子类继承。
//super();//在调用子类构造方法的时候,隐含的调用了 super() 变量,
//也就是先调用父类的构造方法(不带参数)在调用子类的构造方法。如果父类没有构造方法,编译器就会报错。
System.out.println("fish construct");
}
void breathe()//子类的方法
{
super.breathe();//通过 super 特殊变量 可以调用被子类覆盖的父类方法。
super.height=40;//通过 super 特殊变量 可以调用被子类隐藏的父类变量。
System.out.println("fish bubble");
}
}
class Integration {
static void fn(Animal an)
{
an.breathe();
}
public static void main(String[] args){
Animal an = new Animal(); //实例化Animal类的对象,an是对象的reference(引用)
Fish fh = new Fish();//实例化Fish类的对象,fh是对象的reference(引用)
an.breathe();//an 调用Animal类的void breathe()方法。
fh.height=30;//fh给Animal类的变量int height 赋值.继承父类的成员变量.
fh.breathe();//fh调用它自己的方法,假如它自己没有这个方法但父类(Animal)中有这个方法,它就会调用父类中的这个方法。
//反之(如果有),它就会调用它自己的方法,这就是方法的覆盖。
//多态性
Animal an;//将an声明为Animal的对象变量。
Fish fh2 = new Fish();
fh2.eat();
an=fh;
an=fh2;//因为子类没有eat()这个方法,所以这调用的是父类的eat()方法。
Integration.fn(an);//直接用类名调用静态方法(static)。多态性
}
}
- · Abstract class VS Interface
- · 程序员需要一本面向对象的实践指南吗?
- · 在ASP.NET中面向对象的编程思想
- · 61条面向对象设计的经验原则
- · 面向对象分布式开发系统理论篇(上)
- · 面向对象分布式开发系统理论篇(下)
- · 围棋与OOAD
- · OO,OO以后,及其极限(1)
- · OO,OO以后,及其极限(5)
- · OO 设计过程:开始设计软件
- · OO 设计过程:验证分析
- · OO 设计过程:应用的用例,第 1 部分
- · OO 设计过程:应用的用例,第 2 部分
- · 编写用例文档-文档中应包括哪些部分,为什么要…
- · 用例建模技巧
- · UML用例建模的慨念和应用
- · UML的现状及未来发展
- · 建模的误区——走出一般性的设计误区,迈向成…
- · UML三大硬伤
- · 极限建模方法
- · 解析UML的动态建模机制(2)
- · 解析UML的动态建模机制(1)
- · UML元元模型与MOF及CDIF的一致
- · 解析UML的静态建模机制(3)
- · 解析UML的静态建模机制(2)
- · 解析UML的静态建模机制(1)
- · 於 UML 循序圖中應用造型和註解
- · Rational Rose和UML可视化建模基础
- · 标准建模语言UML的动态建模机制
- · 第二章 Hello World
- · 第一章 UML模型的基本概念
- · 用Uml画蓝图
- · 用UML画草图
- · UML一统天下 ——统一的不是建模过程而是建模…
- · 统一建模语言UML概述(二)
- · 敏捷开发者发现新西兰人干得更好
- · UML要点与应用
- · 用UML进行W3C XML Schema设计
