java基础总结(接上篇)

1.组合和继承有什么区别
1)继承是隐式的获得父类的对象,被包含类和父类对应,是is-a的关系;组合可以显式的获得被包含类(继承中称为父类)的对象,组合外部类和子类对应。
2)继承关系在编译期决定;组合关系在运行期决定。
3)继承是父类与子类之间一种紧耦合关系;组合是在组合类和被包含类之间的一种松耦合关系。
4)选择组合关系,在组合类中包含了外部类的对象,组合类可以调用外部类必须的方法;使用继承类时,父类的所有方法和变量被子类无条件继承,子类不能选择。
5)使用继承关系时,用父类变量引用子类对象,实现多态,组合无此特性。

2.java多态的实现机制是什么
依靠父类或接口的引用指向子类

3.重载和覆盖(重写)有什么区别(可查看上一篇博客笔记)
相同点:
1)都要求方法同名
2)都可以用于抽象方法和非抽象方法之间
不同点:
1)方法覆盖参数列表必须一致,而方法重载要求参数列表必须不一致。
2)方法覆盖要求返回类型必须一致,方法重载对此没有要求。
3)作用域不同:方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类中的所有方法(包括从父类中继承而来的方法)
4)方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载没有任何限制。
5)父类的一个方法只能被子类覆盖一次,而一个方法可以在所有的类中可以被重载多次。
6)对于属性(成员变量)而言,不能重载,只能覆盖。
注:重写的方法不能是final修饰的、重写的方法不能为private、重写的方法不能是static

4.抽象类和接口有什么区别?,抽象类和抽象方法?
(1)抽象类(abstract class A{//定义一个抽象类)和接口(class Demo implements MyInterface{)
1)抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2)抽象类要被子类继承,接口要被类实现。
3) 抽象类中可以做方法申明,也可以做方法实现,接口只能做方法申明
4) 抽象类中的变量是普通变量,抽象类的修饰符不能是private,接口里定义的变量只能是公共的静态的常量。
5)抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6)抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。
7)接口可继承接口,并可多继承接口,但一个类只能继承几个抽象类。
(2)抽象类和抽象方法
1)有抽象方法的类一定是抽象类,抽象类里可以没有抽象方法
2)当子类继承抽象类时,必须要将抽象类中的抽象方法全部实现或者重写,否则子类依然是抽象类,因为继承了抽象方法
3)抽象类必须有abstract关键字修饰,不可以通过new来创建对象,抽象方法不可以写函数体,构造方法、类方法(static修饰的方法)不能声明为抽象方法。抽象方法要被实现,所以不能是静态的,也不能是私有的。

5.内部类有哪些?
内部类:将一个类定义在另一个类里面或者方法里面,这称为内部类,内部类的实例化对象存在于外部类的实例化对象中,并可直接访问包围它的实例的方法和字段,要实例化一个内部类,先实例化外部类。
(1)Java内部类有成员内部类、局部内部类、匿名内部类、静态内部类
1)成员内部类: 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。 当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。
2)局部内部类:定义在一个方法或者一个作用域里面,访问权限仅限于方法内或者该作用域内;
3)匿名内部类:没有名字的内部类
4)静态内部类:指被声明为static的内部类,他可以不依赖内部类而实例,而通常的内部类需要实例化外部类,从而实例化。静态内部类不可以有与外部类有相同的类名。不能访问外部类的普通成员变量,但是可以访问静态成员变量和静态方法(包括私有类型) 一个 静态内部类去掉static 就是成员内部类,他可以自由的引用外部类的属性和方法,无论是静态还是非静态。但是不可以有静态属性和方法。

6.this和super的区别?
1)super访问基类中的属性;this访问本类中的属性,如果本类没有此属性则在父类中查找
2)super访问基类中的方法;this访问本类中的方法,如果本类没有此方法则在父类中查
3)super调用基类的构造方法,必须放在子类构造方法首行;this调用本类构造函数,必须放在构造方法的首行;
4)this.变量,调用当前对象的变量;super.变量直接调用父类中的变量,访问基类的数据成员
5)this()和super()不能存在于统一构造函数中,因为this语句调用当前类的另一个构造函数中包括一个父类的构造器,在调用super(),相当于调用了两次,编译器不会通过;this和super不能用于static修饰的变量、方法、代码块。因为两者都指的是对象(实例)。

7.final finally和finalize区别
1)final?修饰符(关键字):如果一个类被声明为final(final class A),此时A不能再派生出新的子类,不能作为父类被继承;一个类不能既被声明为 abstract的,又被声明为final的;将变量或方法声明为final, 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改,修饰的变量相当于常量。被声明为final的方法也同样只能使用,不能重写
2)finally?:再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,与其匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)
3)finalize?方法名:Java 中,使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。定义在Object 类中。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用。

8.static关键字
1)static成员变量:java提供两种类型的变量,用static修饰的静态变量和没用此修饰的实例变量。静态变量属于类,在内存中有一个复制,静态成员所在的类被加载,静态变量就会被分配空间,就能被使用,引用方式有类.静态变量和对象.静态变量
实例变量属于对象,对象被创建后,实例变量才会被分配内存空间,才能被使用,在内存中有多个复制,只有“对象.实例变量”的引用方式。
2)static成员方法:static方法是类的方法,不用创建对象就可以被调用,此方法中不能使用this和super关键字,不能调用非static方法
3)实现单例模式的设计:单例模式指该类只能有一个实例,所以单例模式要隐藏类的构造函数(把构造函数声明为private),并提供一个创建对象的方法,因为构造函数被声明为private,外界无法创建这个类型的对象,只能通过通过该类提供的方法来获取类的对象,所以只能把创建对象的方法声明为static

9.数组的拷贝方式有哪些?
1)数组名.clone()
Int[] arr = {1,2,3};
Int[] brr = arr.clone();
2)Arrays.copyof(原数组,拷贝数组长度)
Int[] arr = {1,2,3,4,5};
Int[] brr = Arrays.copyof(arr,3);//底层调用system.arraycopy
3)System.arraycopy(Object src, int srcPos, Object dest, int desPos, int length))
Int[] arr = {1,2,3,4,5};
Int[] brr = new int[length];
System.arraycopy(arr,0,brr,0,arr.length)
Arr:原数组;0:原数组拷贝起始位置;brr:目标数组;0:从目标数组起始位置开始拷贝;arr.length :拷贝的长度
4)for循环

10.Arrays.sort用的是什么排序算法?怎么优化?
用的是快速排序算法:先选择一个基准,比基准小的往前,大的往后;对基准前和基准后进行同样的操作,知道排序完成。
优化:基准取中,小数组选用插入排序,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值