第08章:随堂复习与企业真题(面向对象-高级)

来源:尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)

基本都是宋老师发的资料里面的内容,只不过补充几个资料里没直接给出答案的问题的答案。
不想安装markdown笔记的app所以干脆在这里发一遍。

第08章:随堂复习与企业真题(面向对象-高级)


一、随堂复习

1. 关键字:static

  • static:静态的,随着类的加载而加载、执行。

  • static用来修饰:属性、方法、代码块、内部类(不能修饰构造器!!!)

  • 熟悉:static修饰的类变量、类方法与不使用static修饰的区别。

    • 类变量:类的生命周期内,只有一个。被类的多个实例共享。
  • 掌握:我们遇到属性或方法时,需要考虑是否声明为static的。

2. 单例模式(或单子模式)

  • 经典的设计模式有23种
  • 解决的问题:在整个软件系统中,只存在当前类的唯一实例。
  • 实现方式:饿汉式、懒汉式、枚举类等
  • 对比饿汉式和懒汉式
    • 饿汉式:“立即加载”,生命周期长,线程安全的。
public class BankTest {
    public static void main(String[] args) {
        Bank bank1 = Bank.getInstance();
        Bank bank2 = Bank.getInstance();
        System.out.println(bank1 == bank2); //实际上是同一个对象
    }
}

//饿汉式
class Bank{
    //1.类的构造器私有化
    private Bank(){

    }

    //2.内部提供当前类的实例,即内部构建对象
    //4.此时,对象也要静态
    private static Bank instance = new Bank();

    //3.提供公共的静态方法,返回当前对象
    public static Bank getInstance(){
        return instance;
    }
}
  • 懒汉式:“延迟加载”,线程不安全。
public class GirlfriendTest {
    public static void main(String[] args) {

    }
}

//懒汉式
class Girlfriend{

    //1.类的构造器私有化
    private Girlfriend(){

    }

    //2.声明当前类的实例
    //4.此时,对象也要静态
    private static Girlfriend instance = null;

    //3.获取当前类的实例,如果未创建对象,则在方法内部创建
    public static Girlfriend getInstance(){
        if (instance == null){
            instance = new Girlfriend();
        }
        return instance;
    }
}
  • 需要会手写饿汉式和懒汉式

3. 理解main()方法

  • public static void main(String[] args){}
  • 理解1:作为程序的入口;普通的静态方法
  • 理解2:如何使用main()与控制台进行数据的交互。
    • 命令行:java 类名 “Tom” “Jerry” “123”

4. 类的成员之四:代码块

  • 分类:静态代码块、非静态代码块
  • 使用频率上来讲:用的比较少。
  • 静态代码块:随着类的加载而执行
  • 非静态代码块:随着对象的创建而执行

总结:对象的实例变量可以赋值的位置及先后顺序

① 默认初始化
② 显式初始化 或 ⑤ 代码块中初始化
③ 构造器中初始化

④ 有了对象以后,通过"对象.属性"或"对象.方法"的方法进行赋值

执行的先后顺序:
① - ②/⑤ - ③ - ④

5. 关键字:final

  • 最终的

  • 用来修饰:类、方法、变量(成员变量、局部变量)

    • 类:不能被继承
    • 方法:不能被重写
    • 变量:是一个“常量”,一旦赋值不能修改。

6. 关键字:abstract

  • 抽象的
  • 用来修饰:类、方法
    • 类:抽象类:不能实例化。
    • 方法:抽象方法:没有方法体,必须由子类实现此方法。

7. 关键字:interface

  • interface:接口,用来定义一组规范、一种标准。

  • 掌握:接口中可以声明的结构。

    • 属性:使用public static final修饰

    • 方法:jdk8之前:只能声明抽象方法,使用public abstract修饰

      ​ jdk8中:声明static方法、default方法。

      ​ jdk9中:声明private方法。

  • 笔试题:抽象类、接口的对比。

8. 类的成员之五:内部类

> 成员内部类的理解
> 如何创建成员内部类的实例
> 如何在成员内部类中调用外部类的结构
> 局部内部类的基本使用(关注:如何在方法内创建匿名局部内部类的对象)

9. 枚举类:enum

  • 掌握:使用enum关键字定义枚举类即可。

10. 注解:Annotation

  • 框架 = 注解 + 反射 + 设计模式
  • Java基础阶段:简单。@Override 、 @Deprecated、@SuppressWarnings
  • 元注解:对现有的注解进行解释说明。
    • @Target:表明可以用来修饰的结构
    • @Retation:表明生命周期
  • 如何自定义注解。

11. 包装类的使用

  • 掌握:基本数据类型对应的包装类都有哪些?
  • 掌握:基本数据类型、包装类、String三者之间的转换
    • 基本数据类型 <-> 包装类:自动装箱、自动拆箱
    • 基本数据类型、包装类 <-> String
      • String的valueOf(xxx)
      • 包装类的parseXxx(String str)

12. IDEA:快捷键和debug

二、企业真题

2.1 static关键字

1. 静态变量和实例变量的区别?(保*丰、*软国际、*软华*、北京明**信)
类似问题:
> 说明静态变量和实例变量之间的区别和使用场景(上海*动)

2. 静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?(*度)
类似问题:
> 在java中,可以重载一个static方法吗?可以覆盖一个static方法吗?(Vi*o)

静态方法不能被重写。不能被覆盖。不存在多态性。

3. 是否可以从一个static方法内部发出对非static方法的调用?(同*顺)

只能通过对象来对非静态方法的调用。

4. 被static修饰的成员(类、方法、成员变量)能否再使用private进行修饰?(联*优势)

完全可以。除了代码块。

2.2 设计模式

1. 知道哪些设计模式?(*通快递、蚂**服)

单例模式、模板方法、享元设计模式

2. 开发中都用到了那些设计模式?用在什么场合? (久*国际物流)

略(目前答不了)

2.3 main()

1. main()方法的public能不能换成private,为什么(凡*科技、顺*)

可以改。但是改完以后就不是程序入口了。

2. main()方法中是否可以调用非静态方法?(浩*科技)

只能通过对象来对非静态方法的调用。

2.4 代码块

1. 类的组成和属性赋值执行顺序?(航*拓普)
类似问题:
> Java中类的变量初始化的顺序?(*壳)

略。

2. 静态代码块,普通代码块,构造方法,从类加载开始的执行顺序?(恒*电子)
类似问题:
> 类加载成员变量、静态代码块、构造器的加载顺序(*科软、软**力、同*顺)
> static代码块(静态代码块)是否在类的构造函数之前被执行(联*优势)

静态代码块 --> 普通代码块 --> 构造器

2.5 final关键字

1. 描述一下对final理解(华**博普)

2. 判断题:使用final修饰一个变量时,是引用不能改变,引用指向的对象可以改变?(*米)

引用不能改变。

引用指向的对象实体中的属性,如果没有使用final修饰,则可以改变。

3. 判断题:final不能用于修饰构造方法?(联*优势)

是的。

4. final或static final 修饰成员变量,能不能进行++操作?(佳*贸易)

不能。

2.6 抽象类与接口

1. 什么是抽象类?如何识别一个抽象类?(易*支付)

使用abstract修饰。

2. 为什么不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法?(止**善)

略。 为了语言的自洽。

3. 接口与抽象类的区别?(字*跳动、阿*校招、*度校招、**计算机技术及应用研究所、航*拓普、纬*、招**晟、汇*云通、数信**科技、北京永*鼎力、上海*连科技)

略。

4. 接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实现类(concrete class)?(航*拓普、*蝶、深圳德*科技)
类似问题:
> 接口A可以继承接口B吗?接口A可以实现接口B吗?(久*国际物流)

是;是;是;

5. 接口可以有自己属性吗?(华*中盛)

可以。必须是public static final的

6. 访问接口的默认方法如何使用(上海*思)

使用实现类的对象进行调用。而且实现还可以重写此默认方法。

2.7 内部类

1. 内部类有哪几种?(华油**普、来*科技)

略。

2. 内部类的特点说一下(招通**)
类似问题:
> 说一下内部类的好处(北京楚*龙)
> 使用过内部类编程吗,有什么作用(软**力)
8.匿名类说一下(阿*校招、上海立*网络)

2.8 枚举类

1. 枚举可以继承吗?(顺*)

使用enum定义的,其父类就是Enum类,就不要再继承其他的类了。

2.9 包装类

1. Java基本类型与包装类的区别(凡*科技)

略。

2.10 综合

1. 谈谈你对面向对象的理解(君*科技、航*拓普、…)
  • 面向对象的两个要素:类、对象 —> 面向对象编程。“万事万物皆对象”。
  • 面向对象的三大特征
  • 接口,与类并列的结构,作为一个补充:类可以实现多个接口。
2. 面向对象的特征有哪些方面? (北京楚*龙、深圳德*科技、直*科技、米*奇网络、航*拓普)
类似问题:
> 面向对象核心是什么?(平**服)
  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 李永乐数学二真题解析1987-2008pdf是一本数学真题集,它汇集了从1987年到2008年期间的数学二真题,并对这些真题进行了详尽的解析。 这本真题解析的目的是帮助学生更好地备考数学二,通过对历年真题的解析,学生可以了解到真题中的题型分布、考点重点和解题技巧等信息。真题解析还给出了每道题的详细解答过程和解题思路,其中包括了一些常用的求解方法和技巧,使学生能够更加全面地掌握数学二的知识和技能。 通过阅读这本真题解析,学生可以逐渐熟悉数学二的考试要求,了解考试的难度和考点分布,培养应对考试的策略和技巧。学生可以结合解析中的详细解答过程,进行反复练习和思考,提高自己的解题能力和思维灵活性。 这本真题解析还可以帮助学生进行针对性的学习和复习。学生可以根据真题解析中的题型分布和考点重点,合理安排学习时间和复习重点,有针对性地进行知识巩固和弱点补充。通过多次实践和反复演练,学生可以逐渐提高自己的解题速度和准确性,增强解题的信心和能力。 总之,李永乐数学二真题解析1987-2008pdf是一本非常有价值的数学学习资料,通过阅读和利用其中的解析内容,学生可以更好地备考数学二,提高自己的解题能力和应试水平。 ### 回答2: 李永乐数学二真题解析1987-2008pdf 是一份包含了1987年至2008年期间的数学二真题解析的PDF文件。该文件为数学学习者提供了丰富的数学题目和解答,帮助他们更好地理解和掌握数学知识。这份真题解析的PDF文件可以帮助学生们对这些年份的数学二真题进行系统的学习和复习。 该份真题解析的PDF文件是由李永乐老师或相关团队制作的,李永乐老师是一位著名的数学教育专家,他在数学教育领域有着丰富的经验和教学成果。这份真题解析的PDF文件的内容可能包括了每年的数学二考试的试题和解答,以及相关的解题思路和方法。这些解析可以帮助学生们更好地理解每年考试的题目,提高他们的解题能力。 对于数学学习者来说,这份真题解析的PDF文件是宝贵的学习资源。通过仔细研究和分析这些真题解析,学生们可以更好地了解数学二考试的出题规律和重点考点,为自己的备考做好充分的准备。此外,这份真题解析的PDF文件也可以帮助学生们更好地掌握解题技巧和方法,提高他们的解题速度和准确度。 综上所述,李永乐数学二真题解析1987-2008pdf是一份重要的学习资源,对于数学学习者来说具有极大的参考价值。通过仔细研究和应用这份真题解析,学生们可以更好地备考数学二考试,提高他们的数学水平。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值