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;       //向下转型
  瞎折腾?吃饱撑着?方便面,酱包,料包都是包着的?吃的时候要打开,为啥还要包呢?
【练习】:
写一个飞机类(有起飞和降落的方法)
写一个战斗机(有起飞和降落的方法)
写一个直升机(有起飞和降落的方法)
写一个测试类(用父类的引用去指向子类的实体(对象))然后分别调用起飞和降落的方法
优点:在保证了父类的基本特征之上,能去使用子类强大的方法和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值