`
Mr.snail
  • 浏览: 27389 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

父类、子类与接口

阅读更多
[/size]父类、子类、接口

父类和子类,顾名思义,它们就是老子和儿子,有着父子关系。而这里指的父子关系,其实

也就是一种包含关系。打个比方,在我们现实生活中,学生Student是一个很大的概念,而

UStudent大学生是属于学生中的一种,这里的学生即为父类,大学生即为子类。

那到底父类和子类区别在哪呢?打个比方,学生和大学生都会有学习Study这个方法,但是

大学生还会有自己特有的Study方法,两者还是有一定区别的,大学生的学习相较于其他学

生来说,是更自由的。

假如现在我已经有了一个Student类,然后我还要写一个UStudent类,然后UStudent类里有

很多方法和Student里的方法都相同,但是还是有一小部分不同,这时问题就出现了,怎样

去解决呢?难道又重新来写一个大学生类,并且重复敲一遍和学生类中一样的代码吗?那样

浪费了时间和精力,并且浪费了存储空间,是很不划算的。于是乎,我们就想到了继承。

子类继承父类,顾名思义,就是子类能引用父类中的某些东西。继承的关键字是extends,

用几行代码说明下怎么去继承。
eg.public class Student(){}//父类

public class UStudent extends Student(){}//子类继承了父类

刚才上面说了当子类和父类用一个同名方法,但是子类的实现却和父类不同、有其特殊性时

,用到方法的重写。重写是指方法定义相同,但是实现不同,存在于父子类之间。
eg.
//父类
public class Student(){
//学习方法
public void study(){
System.out.println("我通过听老师讲课学习");
}
}

//子类
public class UStudent extends Student(){
public void study(){
System.out.println("我通过自习去学习");
}
}

在父类和子类中还有个很重要的概念,转型。分为强制转型和自动转型,这里我们主要讲解

自动转型。父类对象是可以自动转型为子类对象的,然后直接调用子类中已重写的方法。
eg.
Student stu1 = new UStudent();     //stu1自动转型为学生类对象

stu1.study();  //学生类对象调用的是大学生的学习方法

多态
  一个学生能学习,但是引入了自动转型机制、大学生、中学生、小学生继承了学生类、方

法重写了之后。父类对象调用一个study()方法,结果是不确定的。又如,我们大家都是人

,但是由于我们每个人都是独特的。这就是多态最直接的体现。
  eg.
  public class Student(){
System.out.println("0000");
  }
  public class UStudent() extends Student{
System.out.println("1111");
  }
  public class SeniorStudent extends Student(){
System.out.println("2222");
  }
  //多态的体现:父类对象两次调用study,结果是完全不同的
  Student stu1 = new UStudent();
  stu1.study();
  Student stu2 = new SeniorStudent();
  stu2.study();

这里要着重注意的是,一个子类只可以继承一个父类,但是一个父类可以被多个子类去继承





接下来我们再来说说接口。
接口
  比如,我们要画图形,LINE、OVAL、RECT等都继承自DrawImage类,但是每个子类画图的

方法都是完全不一样的,此时,父类里面不需要有什么具体实现就行。这时,接口出现了。

它的作用就是给其他类继承(这里用到一个特殊的关键字:interface,是特殊的继承),让

其他类实现里面很抽象的方法。
  eg.
  //接口里的方法都是抽象的,没有方法体;属性都是常量;不能实例化一个对象
  public interface DrawImage(){
public void draw();
  }
  public class LINE implements DrawImage(){
public void drawLine(){
        System.out.println("draw a line");
}
  }
  public class OVAL implements DrawImage(){
public void drawOval(){
        System.out.println("draw a oval");
}
  }
  public class LINE implements DrawImage(){
public void drawRect(){
        System.out.println("draw a rect");
}
  }

最后再总结一下:
1.一个class只能extends一个class(单根继承)
2.一个class可以implements多个interface
3. 一个interface可以extends多个interface
4.一个class可以在extends一个class的基础上再去implements多个interface[size=large]
[/size][size=xx-large][size=large][/size]
分享到:
评论

相关推荐

    父类赋值给子类

    在编程领域,特别是面向对象编程中,"父类赋值给子类" 是一个常见的操作。C# 作为一种强大的面向对象的语言,提供了多种方式来实现这种继承关系下的数据复制。这里我们将深入探讨如何在 C# 中进行父类属性到子类属性...

    java 子类对象赋值给父类对象的使用

    2. **构造器与初始化**:子类对象在创建时会先调用父类的构造器,确保父类的状态得到正确初始化,然后执行子类自己的构造逻辑。 3. **变量隐藏**:如果子类和父类有同名的实例变量,子类变量会“隐藏”父类变量。...

    java中的继承(子类调用父类构造方法还不懂).doc

    - **定义**:当子类中的方法与父类中的方法具有相同的方法名、参数列表和返回类型时,称子类方法重写了父类的方法。 - **规则**: - 方法名、参数列表和返回类型必须完全相同。 - 子类方法的访问级别不能小于父类...

    再次详细说明在继承中的程序执行顺序,子类与父类到底哪个先执行

    7. **接口与多继承**: - 在Java中,一个类只能直接继承一个父类,但可以实现多个接口。接口中的方法默认是抽象的,所以子类必须提供这些方法的实现。在Python中,通过多重继承可以同时继承多个父类。 综上所述,...

    简单的java类的重写还有父子类的练习(多种图形面积求取)

    这个练习主要涉及了如何创建一个基础的图形类(Shape)作为父类,并通过子类重写父类的方法来实现不同图形面积的计算。下面将详细介绍这个过程。 首先,`Shape`类可以定义为一个抽象类,因为它的实例无法直接创建,...

    继承与接口的含义以及其子类相关的含义

    方法覆盖发生在子类中,子类定义一个与父类同名且参数列表完全相同的方法,以改变或扩展父类的方法行为。 **this关键字** `this`关键字用于引用当前对象,常用于区分成员变量和局部变量,或者在构造器中调用其他...

    WPF继承_子类继承父类,实现跨类调用方法

    在Windows Presentation Foundation (WPF) 中,继承是面向对象编程的一个关键特性,它允许子类继承父类的属性、字段和方法,以便扩展或重写它们。标题“WPF继承_子类继承父类,实现跨类调用方法”表明我们将讨论如何...

    java子类重写父类的方法.doc

    - **解释**:子类重写父类的方法时,返回类型必须与父类方法相同。 - **示例**: - 父类方法:`public int method()` - 子类重写:`public int method()` —— 正确 - 子类错误重写:`public double method()` ...

    JAVA 子类继承父类的范例 可直接运行

    在Java中,继承是面向对象编程的核心特征之一,它允许我们创建一个新类(子类)基于一个已经存在的类(父类或超类)的结构。这样可以复用现有类的代码,并可添加或覆盖特性来形成新的类。本文将通过具体的代码范例,...

    父类引用指向子类对象[归纳].pdf

    这种技术允许我们通过父类的引用或接口来调用子类的方法,从而实现了代码的灵活性和可扩展性。下面我们将深入探讨这个主题。 首先,多态性(Polymorphism)是面向对象三大特性(封装、继承和多态)之一,它允许一个...

    JAVA获取同一路径下所有子类或接口实现类

    2. **接口与实现**: - 接口(Interface)是Java中的一个抽象类型,定义了一组方法签名,但不包含具体实现。在Java中,一个类可以实现一个或多个接口。 - `Intf`是示例中的接口,`Man`是它的实现类。`...

    Java序列化中子类、父类构造函数问题实例分析

    本文主要介绍了Java序列化中子类、父类构造函数问题,结合实例形式分析了java父类与子类构造函数中序列化接口调用相关操作技巧与使用注意事项。 一、序列化接口的实现 在Java中,如果父类实现了序列化接口,那么其...

    Java 接口与继承

    子类对象可以被隐式转换为父类对象,而父类对象转为子类对象需要显式强制转换,但这只有在父类对象实际是由子类对象创建的情况下才是安全的。 `this`关键字在当前类的上下文中引用当前对象,而`super`则用于引用...

    [Java] 对象类型转换和运算符 instanceof 学习笔记 [#子类转父类 #父类转子类 #对象和引用的区别]

    子类到父类的转换允许我们在不考虑具体子类的情况下使用父类接口,增强了代码的通用性。而父类到子类的转换则提供了更强的类型控制,可以访问子类特有的功能,但这需要谨慎操作,以防止运行时错误。 在实际编程中,...

    Java语言程序设计:JAVA_5-子类与继承.ppt

    Java语言的继承机制是面向对象编程的一个核心特性,它允许我们创建新的类(子类)基于现有的类(父类)。这种机制使得代码复用和扩展变得更加便捷,同时也保持了代码的模块化和组织性。 首先,子类继承父类的语法...

    Java父类继承代码示例

    在Java编程语言中,继承是面向对象编程的一个关键特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这有助于实现代码重用,并且可以创建层次结构的类系统,使代码更加模块化。下面我们将深入探讨Java中...

    利用反射子父类赋值高效工具类案例extends_setvalue.zip

    在“利用反射子父类赋值高效工具类案例extends_setvalue.zip”中,我们关注的是如何通过反射机制高效地为子类和父类的属性赋值。这种技术在数据持久化和查询结果映射到对象模型时特别有用,可以减少冗余代码并优化IO...

    继承的小例子

    在Java编程语言中,继承是面向对象编程的一个核心特性,它允许一个类(子类)继承另一个类...而抽象类和抽象方法则允许我们在设计时定义通用接口,供子类具体实现。这些基础知识构成了Java面向对象编程的重要组成部分。

Global site tag (gtag.js) - Google Analytics