- Java面向对象有哪些特征并举例说明?
特征:继承、多态、封装
举例:
封装:封装一些类的行为和属性,封装类的内部的一些实现机制,不允许外界改变,在不影响功能的实现情况下可以内部进行修改,增强了代码的可维护性、可修改性。生活中像微波炉洗衣机这些。
继承:像一些特性,比如动物,动物都有的一些特性,就不用每个子类都去写一遍,直接继承实现就好,这样就增强了代码的复用性。
多态:多态的三个特性:要有继承、重写、父类引用指向子类对象,如animal A = new Dog();当调用方法的时候,父类引用指向子类对象,即Dog()的方法。
2.Java中抽象类和接口的区别:
相同点:
一个类如果继承某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现;如果一个抽象类继承某个抽象类或实现了某个接口可以选择对其中的抽象方法进行实现,也可以直接拥有。
不同点:
(1)抽象类可以定义构造器、可以有抽象方法和具体方法;接口不能定义构造器且方法全部是抽象方法。
(2)抽象类中的成员可以是private、默认、protected、public;接口中的成员全部是public的。
(3)有抽象方法的类必须声明为抽象类,而抽象类可以没有抽象方法。
(4)一个类只能继承一个抽象类;但一个类可以实现多个接口。
(5)抽象类可以包含静态方法;接口中不能有静态方法。
(6)抽象类可以定义成员变量;接口中的变量都是常量;
(7)抽象类更多的是描述一个概念,比如动物、哺乳动物;植物、实物等,我们人类已经有概念的一般用抽象类;
接口更多的描述的是一种特征,比如flyable,描述一类具有相同特征的,如蜻蜓、飞机、鸟都会飞,都可以实现flyabe接口。
3.equals和==的区别:
equals和==最大的区别是:一个是方法,一个是运算符。
==:如果比较的对象是基本数据类型,则比较的是数据是否相等;如果比较的是引用数据类型,则比较的是对象的地址值是否相等。
equals:用来比较方法两个对象的内容是否相等
注意:equals方法不能用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的地址。
4.Java异常处理机制是什么?
Java异常处理由抛出异常(throw)、捕获异常(try、catch、finally)、声明异常(throws)组成。
Try:将可能出现异常的代码块放在try中
Catch:将异常进行匹配,匹配成功就执行catch中的处理方式
Finally:无论如何都会执行,一般进行一些资源关闭,如网络、IO流的关闭。
5.try catch finally,try里面有return,finally还执行吗?
finally执行,且在return之前执行。
注意:finally无论如何都会执行,除非有System.exit(0)。
finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
6.重载和重写的区别:
重载:同一个类中,方法名相同,参数列表(参数个数、顺序、类型)不同,则视为重载。与修饰符、返回类型无关。不能通过返回类型是否相同判断重载。
重写:个别方法子类不想原封不动地继承父类,就可以重写父类方法。重写是指子类在方法名、参数列表、返回类型与父类保持一致的情况下,对方法体进行修改或重写。但要注意子类函数的访问权限不能低于父类。
7.怎样声明一个类不会被继承,什么场景下会用?
如果一个类被final修饰,那么这个类就不可以被继承。如果一个类中的所有方法都没有重写的需要,当前类可以没有子类,那么就可以使用final修饰类。
经典场景:如Math类,Math类中所有的方法都没有被重写的必要,就是计算比较这些,所以就可以将Math类修饰为final类。
8.八种基本数据类型的大小,以及他们的封装类: