「JavaDay8面向对象」学习新得

JavaDay8 继承

配套代码地址:https://github.com/Philbenzy/Java-question-100/tree/main/day8

1:代码块是什么?代码块的分类和各自特点?

代码块是写在花括 { } 号内的执行语句

代码块的分类:

  • 静态代码块:随着类的加载而加载,只执行一次
  • 构造代码块:在执行构造方法之间执行
  • 局部代码块:限定变量、方法的生命周期,在执行完毕后被回收

2:静态代码块,构造代码块,构造方法的执行流程?

静态代码块(一次) > 构造代码块 > 构造方法

程序演示:Test.java

PS: 如果这个类在创建新对象时,不会再执行一遍这个类中的静态代码块

3:继承概述

继承思想在类与类之间构造出了关联,可以把重复、执行内容相似的代码进行抽取之后独立为一个新类

使用extends关键字表示继承

4:继承的好处

继承的好处:

(1)提高代码复用

(2)增强代码维护性

(3)类与类通过关系连接,具备多态前提

继承也有弊端:

(1)继承的做法增强了类与类的耦合性,某个类的改变会影响到相关类

(2)继承的做法会打破了代码的封装性

5:Java中继承的特点

(1)Java中的继承只支持单继承,但是可以通过多层(重)继承来达到多继承的效果

6:Java中继承的注意事项?以及我们什么时候使用继承?

注意事项

(1)如果成员变量、方法被定义为私有,则子类无法继承;

(2)子类无法继承父类中的构造方法,但是可以使用super( )关键字指定访问;

(3)不要为了部分功能进行继承

什么时候使用?

继承关系可以简单的表达成为:is a

可以通过什么是什么来确定是否可以进行继承

7:继承中的成员访问特点

A:成员变量
在子类方法中访问一个变量

case1:当名称不同时很简单,访问什么就会出现什么;

case2:当名称相同时,会依据查找顺序进行查找

​ (1)查找子类局部范围

​ (2)查找子类成员范围

​ (3)查找父类局部~

​ (4)查找父类成员~

​ (5)JVM报错!

B:成员方法
在测试类中通过子类对象去访问一个方法

​ (1)在子类中查找

​ (2)在父类中查找

​ (3)JVM报错!

8:继承中构造方法的执行流程?假如父类没有无参构造方法,子类应该怎么办?

继承中构造方法的执行流程:

(1)子类初始化默认访问父类无参构造方法

(2)子类构造方法初始化

当父类没有无参构造方法时:

当我们自定义了父类带参构造方法后,JVM就不会再给默认的无参构造方法,这时候

(1)子类可以通过super( )指定访问

(2)子类通过this调用自己的构造方法,但是自己的构造方法中必定有一个会访问到父类的带参构造

(3)不用那么麻烦,手动再写一个无参构造吧

9:面试题:

方法重写方法重载的区别?方法重载能改变返回值类型吗?
Overload(重载):重载发生在类内的成员方法,名称相同,但参数列表不同时,JVM会根据传入参数的类型匹配名称相同的不同方法,此时被称为方法重载,方法重载可以改变返回值类型,因为重载与返回值类型无关。

**Override(重写):**重写发生在出现继承关系时,由于父类的方法应用于子类时满足不了子类的特殊需求,所以在子类中定义一个与父类一摸一样的方法(方法名称、返回值类型、方法权限相同)。

this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。//ExtendsDemo5

this

(1)this关键字用于对本类对象的成员变量与自己的构造方法进行声明

(2)this的三类使用

  • 成员方法:this.成员方法
  • 成员变量:this.成员变量
  • 构造方法:this(构造方法)

super

(1)super是针对父类对象的标识

(2)super的三类使用

  • 父类方法调用
  • 父类变量调用
  • 构造方法调用

10:继承案例练习

A: 学生老师案例

ExtendsDemo.java

B: 猫狗案例分析

ExtendsDemo2.java

11:猜数字小游戏练习。

通过API学习并使用Math类的random()方法。

API:应用编程接口,也可以叫做函数、方法。。。

案例演示:GuessNumber.java

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值