JAVA基础:二、继承

news/2024/6/19 4:52:00 标签: JAVA
继承
1、复习
 一、构造方法。二、方法重载。三、this关键字。
 四、包和访问权限。五、static
2、新内容
一、继承:extends
 1、什么是继承:
  现实世界中,就是儿子继承了老子的东西。
  面向对象的世界中,就是一个类得到了另一个类的成员属性和成员方法。
  class Student extends Person {
  }
  Person 父类
  Student 子类
 extends:一个类可以用extends另一个类,那么这个类可以使用父类的所有方法和属性
 (前提是父类的方法和属性不是private)
 ★注意:一个类只能继承一个类(单继承)
 2、为什么要使用继承
     面向对象的终极目标:减少程序里的重复代码!
     因为:引入了继承之后,实现了代码的重用,实现递增式程序设计(扩展)。
     继承的好处:能扩展,示例不继承的情况下扩展
 3、继承的基本语法特点
 写法:class Teacher extends Person{}
 

 练习:
 写一个人类(姓名,性别,年龄,跑步行为)
 写一个学生(专业,和考试行为)类继承人类
 写一个老师(工资,和上课行为)类继承人类
 写一个测试类(main方法):要求能打印出老师和同学的属性
二、子类实例化过程和Super的用途
 ★继承中构造方法的执行顺序:
 实例化类的对象的时候,先调用父类的构造方法然后调用子类的构造方法。
 构造方法是从这个类,最早的祖先的构造方法开始执行。
 在子类构造方法中,必须调用父类的构造方法!为什么?(不写默认调用无参的构造函数,第一行!)
  因为:由于子类继承了父类的成员变量,子类无法继承构造函数,在赋值时候会产生重复代码。
          虽然不能继承父类的构造函数,但是可以使用super来调用父类构造函数,
          解决成员变量赋值产生重复代码问题。
 注意:对super的调用必须是构造方法的第一句
 ★Super的用途
 super的两种用途:
 第一种用法:用来调用父类的构造方法。(当父类的构造方法需要传值的时候用super()代表父类的构造方法)  使用super去执行父类的构造方法时,一定要放在子类构造方法的第一行
 Java规定:父类的构造方法是不能被子类继承的。
 

三、继承机制下方法覆盖override(函数的复写)   
 方法覆盖:在类的继承机制中,如果子类的方法出现了和父类方法一样的方法,
                那么就认为子类的方法覆盖了父类的方法。
                方法一样体现在:返回值一样,方法名一样,参数也一样,参数类型一样。参数数量一样。
  (但是方法中的内容可以不一样)
 //override 复写、覆盖、重写
 //1、在具有父子关系的两个类中
 //2、父类和子类各有一个方法,这两个方法的定义完全相同。(返回值类型、函数名、参数列表)
 ★注意:在方法覆盖中。通过子类的对象调用的是子类的方法。
 方法覆盖和方法重载:
 方法覆盖:一定是出现在继承的体系结构。
 方法重载:继承并不是必须,只要满足重载的条件即可
 ★Super的第二种用法:当子类的属性和方法跟父类的属性和方法名字相同的时候,
             使用super点来区别调用父类的方法和属性还是子类的方法和属性
            (例如 super.eat()调用的是父类的eat()方法)


四、多态概念(一种类型,多种表现状态)
  ★多态:继承前提下,父类的引用指向子类的实体,调用被重写的方法
          人、学生,在信息学院是学生,走在大街上就是人,上车就是乘客,
  走进新一佳就是顾客,到饭店就是吃货。
 引用转型:
 通过变量名去获取变量中空间的数据(引用:拿过来用用)
 父类(基类)的引用指向子类(派生类)的实体。
 第一:父类的引用指向那个子类的实体,那么久调用那个子类的方法。
 第二:调用同一个方法,但是却可以得到不同的效用,这称之为java中的多态
 多态:
 1.父类中的引用指向子类的实体(动态多态)
   条件:要有继承以及方法覆盖。
 2.方法重载(在没有运行的时候我就知道了要调用哪一个方法),也称之为(静态多态)
 3。父类的引用只能调用子类的覆盖方法,不能调用其他方法。
五、对象的转型
 对象的向上转型:将子类的对象赋值给父类的引用
  笔记本电脑 extends 电脑(){}
  笔记本电脑  b1 = new 笔记本电脑();
  电脑 d1 = b1;
  
  Student s = new Student();  
  //1、Student 继承 Person 2、将Student对象赋值给Person引用
  Person p = s        //对象的向上转型
  
  见示例:JavaOOP_03
 
  向上转型时:(向上转型是不可能失败的)
  ★一个引用能调用哪些成员(属性和方法),取决于这个引用的类型(定义了什么才能够使用什么)。
  ★父类和子类都有这个方法和属性,一个引用调用的是哪个方法和属性,取决于这个引用指向的对象。
 对象的向下转型:将父类的对象赋值给子类的引用
  Student s1 = new Student();
  Person p = s1;      //先把一个对象向上转型
  Student s2 = (Student)p;       //向下转型
  瞎折腾?吃饱撑着?方便面,酱包,料包都是包着的?吃的时候要打开,为啥还要包呢?
【练习】:
写一个飞机类(有起飞和降落的方法)
写一个战斗机(有起飞和降落的方法)
写一个直升机(有起飞和降落的方法)
写一个测试类(用父类的引用去指向子类的实体(对象))然后分别调用起飞和降落的方法
优点:在保证了父类的基本特征之上,能去使用子类强大的方法和功能。

http://www.niftyadmin.cn/n/1868248.html

相关文章

JAVA基础:三、接口 静态工厂01

多态1、复习2、新内容一、面向对象的应用被客户不断变化的需求折磨:客户的需求总是在不断变化过程中原因很简单、客户根本不知道自己需要什么东西,先给你提出一个需求。等你程序开发出来了,他用了,可能跟他想的、说的不一样&#…

JAVA基础:四、接口 静态工厂02

__________________________________________________________________________________________________________________________________________________________________假设你去公司面试,一般都会对学历有要求,比如大学本科、硕士研究生等。招聘接…

JAVA基础:五、异常

异常1、复习2、新内容异常一、什么是异常1、异常的概念:程序中出现的错误2、生活中的异常:什么是异常,正常的反义词。赵日天开车去上班,正常情况从家到公司大概30分钟。异常情况下:堵车、车祸、车子抛锚、没油、碰瓷&a…

JAVA基础:六、集合框架

1. 集合框架 容器数组:长度是固定的。类型是固定的。集合:长度可变,可以放任何类型的对象1.ArrayList 集合:又名动态数组,可以容纳任意长度,任意类型的对象(不包括基本类型) 构造函数 ArrayLi…

JAVA基础:七、集合框架Util

一、新内容(Util包)ArrayList/LinkedList,Vector,HashSet,迭代器Iterator,自定义比较器,HashMap一、Java的集合框架的使用1、什么是集合框架?是一组类和接口,位于java.util包中,用来存储和管理对象,分为三大…

JAVA基础:八、线程

多线程和多进程?1、概念早期的操作系统是单进程的,比如DOS,同一时刻只能做一个事情,IOS系统是单进程操作系统,苹果规定了只有音乐类和地图类等固定类型的APP拥有后台保留进程。多进程:在操作系统中能&#…

JAVA基础:九、随机数

一、新内容(Util包)Random一、Java随机数产生方式1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。long ctms System.currentTimeMillis();System.out.println(ctms);Date date new Date();System.out.println(date.getTime(…

JAVA基础:十、日期类

1.java.util.Date 日期类 构造函数 Date() 表示当前时间 Date(int ,int ,int) 填入年月日,年份需减去1900,月份为0-11 Date(int,int,int,int,int,int)年月日时分秒 主要方…