`
孙海友
  • 浏览: 24864 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

OOP(面向对象编程)基础二 —— Java语言

 
阅读更多

在上一篇博客中,我们总结了OOP中的类的一些基本定义。

java中有许多的类,因此存在一些类之间有继承的关系。那么什么是继承呢?

 一.继承

在面向对象程序设计中,可以在已有的类的基础上定义新的类,而不需要把已有类的内容再写一遍,这就叫做继承

例子:

   举一个生活中的例子:电脑是一个类,电脑可以用来上网。那么台式机,笔记本等就是电脑的子类,它们都可以用来上网。

 

我们为什么要使用继承呢?

  1.  方便,少用很多重复的代码(提高代码的重用性)。
  2. 提高程序的扩展性。

  了解了什么是继承和使用继承的原因,我们现在看一下java继承的语法格式。

      java继承的关键字:extends 

      格式:

 public class 类名(子类名或超类名) extends 类名(父类名或基类名){
         //代码
}

    注意:子类继承父类后,那么必须要有一个参数个数,参数类型和参数顺序和父类构造函数完全相同的构造函数。

 

     例子:public class UNStudent extends Student{}

   在这个继承中如果Student类中存在一个构造函数:

public Student(String name){
	this.name = name;
 }

 

  那么在子类UNStudent中必须存在这样的一个构造函数:

 public UNStudent(String name) {
	super(name);
                  //super关键字表示的是要调用父类中带一个字符串参数的构造方法。
}

 

 我们定义了一个继承了父类的子类,那么子类与父类存在什么样的关系呢?也就是:

 子类能继承到父类的那些方法和属性呢?

        子类能继承到父类所有的属性和方法(构造方法除外)

 子类继承了属性和方法那些是能够使用的呢?

       子类能使用父类中的一个部分方法和属性:

                   1.公有的属性和方法

                   2.受保护的属性和方法

                   3.默认的属性和方法(不写访问修饰符的属性和方法)

 

   例子:同样是Student UNStudent的例子:

public class Student {
     private String name;//定义一个姓名属性
     private double score;//定义一个学分属性
     public void study(){
        score++;
	System.out.println(name+"正在学习中,学分是"+score);
     }
}

 

相应地定义子类

public class UNStudent extends Student {}

 

此时,UNStudent继承了Student中所有的属性和方法,但是可以使用的只有study()这个方法。

 

二.当父类和子类都相同的方法,但是子类中方法的具体实现和父类不同时,可以使用方法的重写

方法的重写:

重写的条件是:

           1.方法的返回值数据类型、方法名、参数个数、参数类型以及参数顺序都必须要和父类的完全相同。

           2.子类在重写方法时,方法的访问修饰符可以大于或者等于父类方法的访问修饰符。

           public -->  protected 默认的 --> private

 例子:同上一个例子

Student的类中有这样的一个学习方法: 

public void study(){
	score++;
	System.out.println(name+"正在学习中,学分是"+score);
}

那么在UNStudent子类要使用另一个study()方法,方法的定义如下:

public void study(){
	System.out.println(this.getName()+"的学习方式不同啦!");
}

在生活中存在有类似的例子:

电脑包括:台式机和平板电脑。电脑可以上网是一个方法,台式机的上网方法相同,而平板电脑的上网可以用触屏来使用,那么平板电脑的上网就是一种重写。

 

三. 方法重写后调用:

 根据实例化的对象,而进行不同的调用,如果实例化的对象是子类的,那么就会优先执行子类中定义或重写方法,如果子类中没有这些方法,则调用父类中的方法。

UNStudent un = new UNStudent("孙哥");
//调用方法以及属性
un.study(5);
//调用时会判断,优先执行了子类中的study()方法。

 

因为存在有子类和父类两个类,那么在实例化对象的过程中就会存在自动转型

   条件:要实现自动转型就必须要存在继承关系。

  格式一:

    父类名  对象名 = new 子类名();

Student stu = new UNStudent();

 

  还有一种特殊但是重要的自动转型。我们先举一个现实生活中的例子: 

     教大学生英语的老师,ta教的是大学生,那么这老师是否可以教小学生?能不能教初中生,那么高中生,其他类型的学生呢?

public class Teacher {
     /**
      * 定义一个教学的方法
      * @param stu是一个父类类型的参数,这样就表示可以接受所有Student以及Student子   类的对象。
      */
      public void teach(Student stu){
	    System.out.println(name+"在教"+stu.getName()+"学习英语!");
	    stu.study();//学生调用自己的学习方法
      }
}

 

teach这个方法中传递了一个父类Studentstu这个对象,这样就表示可以接受所有Student以及Student子类的对象。

 

那么:在定义方法中就存在自动转型

  格式二:

public 返回值数据类型  方法名(父类名  对象名){
	//调用在父类中定义过的方法
}

 

 实例化对象可以:

            1.父类名  对象名A = new 子类名();

            2.子类名  对象名B = new 子类名();

 调用方法:

            1.方法名(对象名A);

            2.方法名(对象名B);

那么自动转型的优点就是:

     节省重复的不必要的代码。

 

 

四.多态: 

我们了解了java类的继承,那么就会存在由方法重载,继承,方法重写,自动转型等技术点所以引起的一些列问题——多态

 存在多态的原因:

   Java在编译的时候并不能确定最终要执行的方法是哪一个;只会根据对象名的类型去判断,调用的方法存不存在,如果这个方法在对象名的类中不存在,则跑出语法错误。

   Java只有在运行的那一刻才能知道最终要执行的方法是哪一个。

 

本篇博文讲解了类的继承以及关于继承的一些知识点,谢谢大家。

 

分享到:
评论

相关推荐

    《面向对象程序设计——Java语言》电子课件(程细柱PPT)

    《面向对象程序设计——Java语言》是一门深入探讨如何使用Java进行面向对象编程的课程,由知名讲师程细柱制作的PPT电子课件。面向对象编程(Object-Oriented Programming,简称OOP)是现代软件开发中的核心编程范式...

    面向对象编程C++和Java比较教程 中英文完整版 pdf

    面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它通过将数据和操作数据的方法封装在对象中,实现了程序设计的模块化和抽象化。本教程对比了两种广泛应用的面向对象语言——C++和Java...

    面向对象编程基础_python面向对象_python教程_

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它基于“对象”的概念,将数据和操作这些数据的方法封装在一起。在Python中,面向对象编程是其核心特性之一,使得Python成为了一种非常适合...

    Java基础——面向对象编程

    Java基础——面向对象编程 面向对象编程(Object-Oriented Programming,OOP)是一种编程方法,它将现实世界中的对象抽象出来,并使用计算机模型来描述。面向对象编程的核心概念是类(class)和实例(instance)。...

    JAVA语言与面向对象程序设计答案

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将复杂的问题分解为一系列相互协作的对象,以实现更清晰、可维护的代码结构。在“JAVA语言与面向对象程序设计”一书中,通常会涵盖以下几个...

    Java语言与面向对象程序设计 课件

    通过学习"Java语言与面向对象程序设计"这门课程,学生将不仅掌握Java编程的基本技能,还能理解面向对象编程的精髓,为编写高效、可靠的软件打下坚实的基础。配合印旻和王行言的答案解析,学生能更好地理解课程内容,...

    C语言也能面向对象(一)——一个简单的类

    然而,相比起C++或Java等支持面向对象编程(Object-Oriented Programming, OOP)的语言,C语言本身并不直接内置面向对象的特性。但这并不意味着我们不能在C语言中实现面向对象的概念。这篇博客“C语言也能面向对象...

    北大青鸟ACCP6.0 第二学期 S2 JAVA oop面向对象

    【北大青鸟ACCP6.0 第二学期 S2 JAVA oop面向对象】课程是针对Java编程中的核心概念——面向对象编程(OOP)进行深入讲解的教程。面向对象编程是一种编程范式,它将复杂的问题分解为多个独立的对象,通过对象之间的...

    java 面向对象编程(csdn)————程序.pdf

    在Java编程语言中,面向对象编程(OOP)是一种核心概念,它基于类和对象的概念,以及封装、继承和多态三大特性。在本文中,我们将深入探讨这些知识点,以便更好地理解Java中的面向对象编程。 首先,让我们回顾一下...

    孙卫琴《Java面向对象编程》配套PPT

    Java语言完全支持面向对象编程,其三大特性——封装、继承和多态,是OOP的核心。 1. 封装:这是面向对象编程的基础,它将数据和操作数据的方法捆绑在一起,形成一个独立的实体,即对象。在Java中,通过访问修饰符...

    JAVA面向对象基础

    #### 一、面向对象编程语言的发展史 面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,其核心在于将现实世界中的对象及其属性和行为映射到软件系统中,从而使得程序更加直观、易于理解...

    Java编程语言入门 Java语言基础教程 第05课 oop1 Java的面向对象编程-继承、接口、包 共48页.pdf

    ### Java的面向对象编程——继承、接口、包 #### 一、面向对象编程基础 **1.1 类与对象** 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它将数据和对数据的操作封装在一个实体内,即类...

    【Java】面向对象的课程设计——学生管理系统(增、删、查、找)

    适合人群:具备一定的编程能力,对Java语言的基本语法有一定的了解,适合在校大学生 能学到什么: ① 做系统的基本框架与思路 ② 功能模块化,后集体调用,方便后期管理 ③ 代码的规范使用 阅读建议: ①可以打开...

    JAVA面向对象编程思想

    Java作为一种典型的面向对象编程语言,充分体现了面向对象的核心思想。 #### 二、Java面向对象的三大特征 ##### 1. 封装 **概念**:封装是面向对象编程的核心之一,它指的是将数据(属性)和方法(行为)绑定在...

    JAVA面向对象编程_孙卫琴.pdf

    面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计思想,它将数据和操作数据的方法定义为统一的整体——对象(Object),并通过类(Class)来实现对象的创建。在Java语言中,面向对象编程的主要...

    Java面向对象编程经典实例-模拟彩票

    本实例——"Java面向对象编程经典实例-模拟彩票",是通过Java语言来实现一个彩票模拟系统,以帮助开发者更好地理解和掌握面向对象设计思想。 首先,我们来看"模拟彩票"这个主题。在实际生活中,彩票系统包含了购买...

    跟我学Java面向对象程序设计技术及应用——Java中的面向对象技术(第1部分).pdf

    面向对象编程方法在Java中体现在类和对象的创建,以及类中的成员变量和方法的定义。例如,`Student`类展示了如何定义一个对象,包含私有属性如ID、姓名、年龄等,以及公共方法如设置姓名、学习课程和自我训练。 ...

    Java高手真经(编程基础卷)光盘全部源码 免积分

    javaoop.zip 06.Java面向对象编程(计算器) javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业...

    面向对象编程思想小谈——类和对象.pdf

    面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。对象可以包含数据,以字段的形式存在,通常被称为属性或特征;还可以包含代码,通常以方法的形式存在。对象内的方法可以访问和修改对象内的数据。 ...

Global site tag (gtag.js) - Google Analytics