第一题. switch 是否能作⽤在 byte/long/String 上?
- Java5 以前 switch(expr)中,expr 只能是 byte、short、char、int。
- 从 Java 5 开始,Java 中引⼊了枚举类型, expr 也可以是 enum 类型。
- 从 Java 7 开始,expr 还可以是字符串(String),但是⻓整型(long)在⽬前所有的版本中都是不可以的
第二题. break ,continue ,return 的区别及作⽤?
- break 跳出整个循环,不再执⾏循环(结束当前的循环体)
- continue 跳出本次循环,继续执⾏下次循环(结束正在执⾏的循环 进⼊下⼀个循环条件)
- return 程序返回,不再执⾏下⾯的代码(结束当前的⽅法 直接返回)
第三题 面向对象和面向过程的区别?
⾯向过程 :⾯向过程就是分析出解决问题所需要的步骤,然后⽤函数把这些步骤⼀步⼀步实现,使⽤的时候再⼀个⼀个的⼀次调⽤就可以。
⾯向对象 :⾯向对象,把构成问题的事务分解成各个对象,⽽建⽴对象的⽬的也不是为了完成⼀个个步骤,⽽是为了描述某个事件在解决整个问题的过程所发⽣的⾏为。 ⽬的是为了写出通⽤的代码,加强代码的重⽤,屏蔽差异性。
⽤⼀个⽐喻:⾯向过程是编年体,⾯向对象是纪传体。
第四题 ⾯向对象有哪些特性?
- 封装
封装把⼀个对象的属性私有化,同时提供⼀些可以被外界访问的属性的⽅法。 - 继承
继承是使⽤已存在的类的定义作为基础创建新的类,新类的定义可以增加新的属性或新的⽅法,也可以继承⽗类的属性和⽅法。通过继承可以很⽅便地进⾏代码复⽤。
关于继承有以下三个要点:
- ⼦类拥有⽗类对象所有的属性和⽅法(包括私有属性和私有⽅法),但是⽗类中的私有属性和⽅法⼦类是⽆法访问,只是拥有。
- ⼦类可以拥有⾃⼰属性和⽅法,即⼦类可以对⽗类进⾏扩展。
- ⼦类可以⽤⾃⼰的⽅式实现⽗类的⽅法。
- 多态
所谓多态就是指程序中定义的引⽤变量所指向的具体类型和通过该引⽤变量发出的⽅法调⽤在编程时并不确定,⽽是在程序运⾏期间才确定,即⼀个引⽤变量到底会指向哪个类的实例对象,该引⽤变量发出的⽅法调⽤到底是哪个类中实现的⽅法,必须在由程序运⾏期间才能决定。
在 Java 中有两种形式可以实现多态:继承(多个⼦类对同⼀⽅法的重写)和接⼝(实现接⼝并覆盖接⼝中同⼀⽅法)。
第五题. 重载(overload)和重写(override)的区别?
⽅法的重载和重写都是实现多态的⽅式,区别在于前者实现的是编译时的多态性,⽽后者实现的是运⾏时的多态性。
- 重载发⽣在⼀个类中,同名的⽅法如果有不同的参数列表(参数类型不同、参数个数不同或者⼆者都不同)则视为重载;
- 重写发⽣在⼦类与⽗类之间,重写要求⼦类被重写⽅法与⽗类被重写⽅法有相同的返回类型,⽐⽗类被重写⽅法更好访问,不能⽐⽗类被重写⽅法声明更多的异常(⾥⽒代换原则)。
⽅法重载的规则:
- ⽅法名⼀致,参数列表中参数的顺序,类型,个数不同。
- 重载与⽅法的返回值⽆关,存在于⽗类和⼦类,同类中。
- 可以抛出不同的异常,可以有不同修饰符。
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!