JavaSE基础(day10)(1)继承(2)访问控制(3)final关键字(4)对象创建的过程(5)多态

默写:
1.编程题
自定义Student类,属性有:学号和姓名,要求实现该类的封装。

2.编程题
自定义Singleton类,分别使用饿汉式 和 懒汉式。

今天内容:
(1)继承
(2)访问控制
(3)final关键字
(4)对象创建的过程
(5)多态

1.继承(重中之重)
人类:
属性:姓名、年龄
行为:吃饭、娱乐
学生类 继承 人类:
属性:学号
行为:学习
教师类 继承 人类:
属性:薪水
行为:讲课
工人类 继承 人类:
属性:工号
行为:工作

1.1 继承的由来
当多个类之间有相同的属性和行为时,则可以将相同的内容提取组成组成一个新类,让多个类继承自该新类即可,从而提高代码的复用性和可维护性。

1.2 继承的概念
继承本质上就是自定义类去吸收现有类中已有的成员,而在自定义类中编写独有成员的机制
在java语言中使用extends关键字来表达继承关系。
如:
class Student extends Person{}
其中Person类叫做 超类/父类/基类。
其中Student类叫做 派生类/子类。

1.3 注意事项
(1)子类可以继承父类中的成员变量,包括私有成员变量,但不能直接访问。
子类不可以继承父类中的构造方法和私有成员方法。
(2)当创建子类的对象时,会自动调用父类中的无参构造方法,相当于增加:super()的效果
(3)在java语言中只支持单继承,也就是一个子类只能有一个父类,但一个父类
可以有多个子类。
(4)不能滥用继承,必须满足 子类 is a 父类的逻辑关系时才可以。

1.4 this关键字和super关键字(熟悉)
(1)基本概念
this关键字表示本类的对象/引用。
super关键字通常表示父类的对象/引用。

(2)使用方式
使用this.的方式可以访问本类的成员变量/成员方法。
使用super.的方式可以访问父类的成员变量/成员方法。

使用this()的方式放在构造方法中的第一行,表示调用本类中的其他构造方法。
使用super()的方式放在构造方法中的第一行,表示调用父类中的构造方法。

要求大家掌握的用法:
a.使用this.的方式可以区分成员变量和形参变量。
b.使用super.的方式可以调用父类中被重写的方法。
c.使用super(实参)的方式可以调用父类中的构造方法。

1.5 方法的重写(Override 熟悉)
(1)基本概念
当子类从父类中继承下来的方法不足以满足子类的需求时,此时需要在子类中重新写一个和父类一模一样(方法名相同、参数列表相同、返回值类型相同)的方法,去覆盖从父类中继承的版本,这种方式叫做方法的重写。

(2)重写的原则
a.要求方法名相同、参数列表相同、返回值类型也相同。
从jdk1.5开始,返回值类型允许返回子类类型。
b.访问权限不能变小,可以相同或者变大。
c.不能抛出更大的异常(异常)。

练习:
自定义Pet类,属性有:姓名、年龄,要求实现该类的封装,并提供打印所有属性的方法.
自定义Dog类,属性有:毛色,要求实现该类的封装,并提供打印所有属性的方法。
自定义TestDog类,在main()方法中创建Dog类的对象,并调用方法打印所有属性。

2.访问控制(熟悉)
2.1 访问控制符
public - 表示公开的
protected - 表示保护的
默认控制符 - 啥也不写的情况采用默认控制方式
private - 表示私有的

2.2 访问控制符的比较
访问控制符 访问权限 本类内部 本包中的其他类 子类内部 其他包中的其他类

  public      公开的       ok           ok             ok          ok
  protected   保护的       ok           ok             ok          no
  默认控制符  默认的       ok           ok             no          no
  private     私有的       ok           no             no          no

要求大家掌握的内容:
a.public修饰的成员表示可以在任意位置访问;
b.private修饰的成员表示只能在本类的内部访问;
c.通常情况下,成员变量都用private修饰,成员方法都用public修饰;

2.3 包的定义

   package 包名;
   package 包名1.包名2....;

使用包的作用在于避免类名的冲突问题,便于代码的管理。

3.final关键字(重点)
3.1 基本概念
final 本意为“最终的,不可更改的”,该关键字可以修饰类、成员方法、成员变量。

3.2 使用方式
(1)使用final关键字修饰类表示该类是最终的,体现在该类不能被继承;
- 防止滥用继承,如:String类、System类等;
(2)使用final关键字修饰成员方法表示该方法不能被重写,可以继承。
- 防止不经意间造成的方法重写,如:SimpleDateFormat类中的format()方法。
(3)使用final关键字修饰成员变量表示该变量必须要赋值,而且不能更改。
- 通常用于描述固定数值,如:Thread类中的MAX_PRIORITY。

补充:
在java语言中static关键字和final关键字很少单独修饰成员变量,通常都是采用public static final共同修饰成员变量来表示常量的概念,该数值必须指定而且不能更改。
通常的命名规范是:所有字母都要大写,不同单词之间采用下划线连接。
如:

   public static final double PI = 3.14;

视频
javaseday10-作业讲解-01
https://v.qq.com/txp/iframe/player.html?vid=r0796orbh8j
javaseday10-继承的概念和使用-02
https://v.qq.com/txp/iframe/player.html?vid=o0796gkz6ll
javaseday10-继承的注意事项-03
https://v.qq.com/txp/iframe/player.html?vid=l07965nxt88
javaseday10-super关键字和方法的重写-04
https://v.qq.com/txp/iframe/player.html?vid=y079641n4rz
javaseday10-Eclipse的安装和使用-05
https://v.qq.com/txp/iframe/player.html?vid=s0796ujjs2t
javaseday10-final关键字的概念和使用-06
https://v.qq.com/txp/iframe/player.html?vid=w07961a08oy
代码
https://pan.baidu.com/s/1j6nQzJKD_GJcV_PKI8l42w

作业:
1.重点理解和掌握Person类和Student类的代码。
2.编程题
自定义矩形类,成员变量主要有:横坐标、纵坐标、长度、宽度,成员方法有:
打印所有成员变量的方法,实现矩形类的封装。
自定义圆形类,成员变量主要有:横坐标、纵坐标、半径,成员方法有:打印
所有成员变量的方法,实现圆形类的封装。
自定义测试类,在main()方法中分别创建矩形和圆形的对象,去调用各自的方法。

你可能感兴趣的:(JavaSE基础,javaSE)