java面试基础之面向对象

面向对象概述

面向对象是把解决的问题按照一定的规则划分为多个独立的对象,通过多个对象之间的配合来实现应用程序的功能。这样子当应用程序的功能发生变动时,只需要修改个别对象就可以了,从而使代码更容易维护

面向对象的特点

封装,继承和多塔器

封装

封装就是讲对象的属性和行为封装起来,不需要让外界知道具体的实现细节。

一般来说都是把一些对象的属性私有化,同时提供一些可以被外界访问的属性的方法

继承

类的继承是指在一个现有类的基础上去构建一个新的类,子类会自动拥有父类所有可以继承的方法和属性。

同时子类也可以对父类的方法进行重写,同时也可以声明自己的方法和属性

多态

多态是指在程序中允许出现重名现象,他指在一个类中定义的属性和方法被其他类继承后,他们可以具有不同的数据类型或表现出不同的行为

多态存在的三个必要条件

继承,重写和父类引用指向子类对象

注意:重写需要和被重写的方法具有相同的方法名,参数列表和返回值类型

另外子类重写父类方法时,子类的访问权限不能比父类被重写的方法更严格,例如父类方法是pubic,子类被重写的方法就不能是protected

面向对象的五大基本原则

单一职责原则

类的功能要单一,

开放封闭原则

一个模块对拓展是开放的,对修改是关闭的、

里式替换原则

子类可以代替父类出现在父类能够出现的任何地方

接口分离原则

尽量把不同的功能拆分在不同的接口,而不要用通用的接口

目录

面向对象概述

封装

继承

多态


 

抽象类和接口的不同

参数抽象类接口
声明抽象类使用abstract声明使用interface
实现子类使用extend来继承抽象类,如果子类不是抽象类就必须要实现抽象类里的所有抽象方法子类使用implement关键字来实现接口,他需要提供接口中所有方法的实现
构造器抽象类可以有自己的构造器,但是抽象类不可以被实例化接口没有构造方法
访问修饰符任意访问修饰符默认为public ,不允许被定义为private和protected
继承单继承一个类可以实现多个接口,一个接口也可以继承多个接口
字段声明任意字段默认都是static final

 

抽象类和普通类的区别

抽象类不可以被实例化,

抽象类可以不包含抽象方法,含有抽象方法的一定是抽象类

抽象类的抽象方法没有方法体

抽象类不可以用final方法修饰,因为抽象类就是要用用来继承的

内部类

内部类分为静态内部类,匿名内部类和成员内部类和局部内部类

静态内部类

定义在类内部的静态类就是静态内部类,静态内部类可以访问外部类所有静态的变量

成员内部类

定义在类内部,成员位置上的非静态类

局部内部类

定义在方法中的类,就是局部内部类

匿名内部类

重写和重载

 重写

方法名,参数列表相同,返回值类型相同,子类的访问控制权限不能比父类小

重载

方法名相同,参数类型不同(参数类型,参数数量,参数顺序),返回值类型随意

对象相等判断

== 和equals的区别是什么

==判断的是两个对象的地址是不是相等,即,判断两个对象是不是相等(基本数据类型==判断的是值,引用数据类型==比较的是内存地址)

equals(),判断两个对象是否相等,有两种情况

1.equals()没有被重写时,等价于==

2, eequals()被重写,则比较的是两个对象的内容,内容相等则返回true

值传递

java中只支持值传递

也就是说,方法中的参数(此时的参数是一个基本数据类型)只是一个拷贝,方法不能修改传递给他的任何参数的变量的内容,参数是引用数据类型时,会改变他的属性的内容

java包

JDK 中常用的包有哪些

java.lang:这个是系统的基础类;
java.io:这里面是所有输入输出有关的类,比如文件操作等;
java.nio:为了完善 io 包中的功能,提高 io 包中性能而写的一个新包;
java.net:这里面是与网络有关的类;
java.util:这个是系统辅助类,特别是集合类;
java.sql:这个是数据库操作的类。
import java和javax有什么区别

刚开始的时候 JavaAPI 所必需的包是 java 开头的包,javax 当时只是扩展 API 包来说使用。然而随着时间的推移,javax 逐渐的扩展成为 Java API 的组成部分。但是,将扩展从 javax 包移动到 java 包将是太麻烦了,最终会破坏一堆现有的代码。因此,最终决定 javax 包将成为标准API的一部分。

所以,实际上java和javax没有区别。这都是一个名字。
 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值