Java全栈大数据学习笔记NO.15(JAVASE-2)

一、继承

1.1 为什么用继承

  为了实现代码的重用,将多个类里的共同的属性和方法,写在一个类里作为父类,需要写的类作为子类,继承父类里的属性和方法,子类和父类要符合 is-a的关系。

1.2 继承的语法

在这里插入图片描述

1.3 继承的特点

  1. 继承的单根性:一个子类只能有一个父类,反过来说,一个父类可以派生出多个子类。
    概念性的:子类也叫做派生类,父类也叫做基类。
  2. 继承具有传递性:如B继承了C,A再继承了B。

1.4 super和this

  • this代表的是当前类对象;
  • super代表当前类的父类,super.调用的都是从父类里继承过来的属性和方法,如果父类里的属性是private,只能通过get/set方法访问属性;

1.5 子父类的构造方法执行顺序问题

   创建子类对象,父类的构造方法是一定会执行,并且一定在子类的构造方法代码执行之前执行。
   当子类构造方法没有通过super关键字,显示的指定执行父类哪一个构造方法,那么系统默认执行父类无参构造方法,注意父类里有没有无参构造方法。

1.6 方法的重写、覆盖,子类的方法覆盖父类继承过来的方法

访问修饰符,返回值类型,方法名,参数列表与父类的方法一致,重写的只是方法体的部分。

1.7 父类里的哪些成员可以被子类继承

构造方法不能被继承,也不允许被重写。

四个访问修饰符:修饰类里的成员的,属性和方法,控制它们的访问级别:

  • public:公共的,访问级别最高;
  • protected:受保护的,在不同包里的非子类,无法访问该修饰符修饰的成员;
  • 默认:只在同一个包内的其他类可以用;
  • private:私有化,即使是子类也是访问不了的,子类不能继承,访问级别仅限于当前类,访问级别最低的;

final

  • 修饰变量,该变量就变成了常量,不允许修改值。
  • 修饰方法,不允许被重写
  • 修饰类,该类不允许被继承

String 类就是final类,所以说String 是不可能存在子类

1.8 抽象类和抽象方法

抽象类是不允许被实例化对象的类,作用是作为父类,被子类继承。
在这里插入图片描述
抽象类可以向普通类一样写属性,写封装,写方法,写构造方法
抽象方法:

  1. 抽象方法只能放入抽象类里,抽象类里可以放任何方法;
  2. 抽象方法,子类必须要重写,除非子类还是个抽象类,也是为了约束子类,必须要有该方法;
  3. 抽象方法没有方法体;

二、多态

多态:就是多种形态,java里的多态,指的是同一种类型的对象,对同一消息的不同响应。即同一父类类型的不同子类对象,调用相同的方法。

实现多态的条件: 一定是子类的对象,类型是父类类型,调用的方法必须父类里存在,并且子类里重写,实际执行的是子类重写后的方法。

如下面程序中调用的都是master.feed()方法,但参数放置的对象不同,执行的方法便是对应子类里重写的方法。简而言之,通过父类来间接使用子类的方法,可节省大量代码。
在这里插入图片描述

多态概念比较抽象,需在程序中多加练习。

实现方法:

  1. 多态可以减少代码量,可以提高代码的可扩展性和可维护性。
  2. 向上转型–子类转换为父类,自动进行类型转换。
  3. 向下转型–父类转换成子类,结合instance of 运算符进行强制类型转换
  4. 实现多态的两种方式
    • 使用父类作为方法形参实现多态
    • 使用父类作为方法返回值实现多态

三、接口

3.1 什么是接口

接口:代表的是功能,当某个对象has a 功能的时候, 写接口,接口的目的是为了使用多态,使程序的扩展性更好。接口目的也是让其他类来实现(继承)接口,接口可以多继承,它也是为了解决类之间的继承是单继承的这个问题。

3.2 接口的语法

JDK1.8之前,接口里只能有 一组抽象方法。接口里可以写静态常量,但不能创建对象。

接口只是一组方法的声明,接口的目的是为了被继承,也叫被实现。接口实现多态与类实现多态是完全相同的。
在这里插入图片描述

3.3 接口与抽象类的区别

相同点:都不能创建对象,都是想被继承,都可以实现多态。
不同点:抽象类是单继承,接口是多继承。

3.4 如何继承(实现)

接口通过 implements进行继承,想要多继承时各个接口用逗号隔开
在这里插入图片描述

3.5 lambda表达式

一般叫它为匿名函数,通过它可以进行函数式编程,可以实现方法的传递。实际上它代表的是接口的实现类对象,只是为了简化代码,就直接写方法的重写。语法:
在这里插入图片描述

  • 参数列表的小括号,只有在一个参数的情况下可以省略,如果方法体只有一条语句,那么大括号也可以省略。
  • 接口里只能有一个抽象方法时,才可以考虑使用lambda表达式。
Imath imath = (x,y)->{
		return x*y;
	};
System.out.println(imath.computer(2, 3));

四、异常

4.1 异常简介

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。
在这里插入图片描述
为了程序的健壮性,需要对程序做异常处理。
在这里插入图片描述

4.2 怎样做异常处理

  • 原理
    在这里插入图片描述
    在这里插入图片描述
  • 用法
    在这里插入图片描述
    在这里插入图片描述
    finally无论在任何情况下都会被执行,唯一在终止程序后,不能执行。

多重捕获异常
在这里插入图片描述

4.3 throw 和throws

程序里用throw抛出异常,那么该方法要么用try-catch来做异常处理,要么将该方法通过throws设置方法为可能发生异常的方法。

throws作用是声明异常方法。

在这里插入图片描述

4.4 自定义异常类

异常类要继承父类Exception。
在这里插入图片描述
异常处理的时候
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值