JavaSE-面向对象之继承、多态

JavaSE-面向对象之继承、多态

  1. 类的概念及创建
  2. 对象概念及使用
  3. 封装的创建及使用

、本章任务

  1. 完成MyBatis相关介绍
  2. 完成MyBatis和Hibernate的区别
  3. 完成API使用和环境搭建使用
  4. 完成mapper的三种形式
  5. 完成util工具类封装
  6. 完成简单的增删改查

三、本章目标

  1. 熟悉MyBatis的相关知识介绍
  2. 掌握MyBatis和Hibernate的区别
  3. 掌握API使用和环境搭建
  4. 掌握mapper的三种形式
  5. 掌握util工具类的封装
  6. 掌握基本增删改查
  • 知识点

1、继承

1. 概念

继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的属性和行为。

1.1 Java继承特点

  1. Java是单继承的,不支持多继承。这样使得Java的继承关系很简单,一个类只能有一个父类,易于管理程序。同时一个类可以实现多个接口,从而克服单继承的缺点。
  2. 继承关系是传递的
  3. private修饰的成员变量或方法是不能被继承的

1.2解决什么问题 
提高了代码的效率,避免了代码重写。

图例 

2. 语法格式

[修饰符] class 子类 extends 父类 { 
    //类体 
}

【示例】 
实现一个继承,定义学生类为父类,定义一个大学生类作为子类。

3. super

this是指当前对象引用,super是指当前对象的父类对象的引用。由于继承子类可以访问父类的成员,所以this除了可以访问自己的成员还可以访问父类的成员,但是为了明确的指明访问的是父类的成员,则要用关键字super来指定。

【示例】 
在大学生类中使用super调用父类的属性和方法。

4. final

final表示不可改变的含义

采用final修饰的类不能被继承

采用final修饰的方法不能被重写

采用final修饰的变量不能被修改

final修饰的变量必须显式初始化 如果修饰的引用,那么这个引用只能指向一个对象,该引用不能再次赋值,但对象本身内部可以修改

构造方法不能被final修饰

5. 方法重写

在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

方法重写的特性 
1)发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法) 
2)子类抛出的异常下不能超过父类相应方法抛出的异常(子类异常不能大于父类异常) 
3)子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)

【示例】 
父亲类上班开车,儿子类上班骑自行车。

6. 父子对象间转换和instanceof

父类和子类拥有公共的属性和方法,那么能否通过父类来访问子类中的继承的公共的属性和方法呢?我们在上面了>解到,如果在子类内部肯定可以,而且通过this和super关>键字可以轻松的使用。 
那么如果在类的外部怎么实现这个应用需求呢?Java提供了类对象间的转换来满足这个需求。我们回顾一下之前的>基本数据类型强制转换,父类和子类之间的转换与其类似。 

隐式转换:小类转大类,也叫为向上转 
强制转换:大类转小类,也为向下转,需要有 “()”作为强制转换。 
如:Student student = new DaXueSheng();//隐式转换 
DaXueShen daXueShen= (DaXueSheng)student;//强制转换

【总结】 
* 子类对象可以被视为其父类的一个对象,如一个大学生(子类)肯定是一个学生(父类)。 
* 父类对象不能被声明为某一个子类的对象,如一个学生不能完全表示一个大学生。 
* 父类引用可以指向子类对象,但不能访问子类对象新增的属性和方法。

instanceof运算符 
Java提供了instanceof关键字,使我们在强制转换之前,判断前一个对象是否后一个对象的实例,是否可以成功的转换,以增强代码的健壮性。 
【示例】 
演示父子类转换的特性

2、 多态

1. 概念

龙生九子各不相同 
意为虽然是亲兄弟,但彼此之间的品性、爱好仍大有不同。

多态性 
多态指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

示例 
通过动物类引用调用它的子类——鸟类,猫类,狗类的call()方法,实现多态

必要条件:继承、重写、向上转型。 
继承:在多态中必须存在有继承关系的子类和父类。 
重写:子类对父类中某些方法进行重写,在调用这些方法时就会调用子类的方法。 
向上转型:在多态中需要父类的引用指向子类的对象。

2. 体现方式

使用父类作为方法形参实现多态。

使用父类作为方法返回值实现多态 。

3. 好处

把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

//不使用多态,本来想拥有一条狗,后来想拥有一只猫,就需要改代码了

public class Person{

    //Dog d;

    Cat c;

    //public void setAnimal(Dog d){

    //  this.d = d;

    //}

    public void setAnimal(Cat c){

        this.c = c;

    }

    public static void main(String[] args) {

        Person p = new Person();

        //p.setAnimal(new Dog());

        p.setAnimal(new Cat());

    }

}

//使用多态,本来想拥有一条狗,后来想拥有一只猫,只需重新设置

public class Person{

    Animal a;

    public void setAnimal(Animal a){

        this.a = a;

    }

    public static void main(String[] args) {

        Person p = new Person();

        //p.setAnimal(new Dog());

        p.setAnimal(new Cat());

    }

}

//动物类及其子类

class Animal{

}

class Dog extends Animal{

}

class Cat extends Animal{

}

五、总结

见:JavaSE-继承、多态总结.xmind

六、作业

1、掌握并完成值传递案例

2、掌握并完成课上多态案例

3、掌握继承语法,并实现Animal、cat、dog三个类的继承关系,自定义属性

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值