java基础知识问题解答

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java基础知识的解答1.java为什么要使用继承(extends);(减少很多类的重复代码)因为在很多类中发现有很多类中重复的属性和行为,那么我们可以把重复的属性和行为放到一起形成一个新的类,然后很多类继承这个新的类,在很多类可以直接继承这个类的属性和行为。2:java中什么情况下使用继承(extends);如果发现很多类中存在isa的关系,那么就可以使用继承;很多类我们叫子类或者是派生类,新类叫做基类或者父类,或者超类(所有类的父类Object,自动继承,单继承)。3:谈谈你对java中继承中的理解(那些该继承,那些不该继承,那些):A.子类与父类在同一个包面,除了private不能被继承,其余都可以被继承。其余:friendly,protected,public。B.在不同的包里面,只有protected和public可以被继承。公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1.公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。2.私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3.保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。4.包(package)的使用规则:包只能写在第一行,包的含义就相当于文件夹,区分不同的类,同一个包中的类名不能相同,而在不同的包中,类名可以相同。5.java中的静态方法能被继承吗?结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏.原因:1).静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成对,不需要继承机制及可以调用。如果子类里面定义了静态方法和属性,那么这时候父类的静态方法或属性称之为隐藏。如果你想要调用父类的静态方法和属性,直接通过父类名.方法或变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是跟实例方法和属性不太一样,存在隐藏的这种情况。2).多态之所以能够实现依赖于继承、接口和重写、重载(继承和重写最为关键)。有了继承和重写就可以实现父类的引用指向不同子类的对象。重写的功能是:重写后子类的优先级要高于父类的优先级,但是“隐藏”是没有这个优先级之分的。3).静态属性、静态方法和非静态的属性都可以被继承和隐藏而不能被重写,因此不能实现多态,不能实现父类的引用可以指向不同子类的对象。非静态方法可以被继承和重写,因此可以实现多态。6.继承里面的super关键字A.如果子类继承父类,在子类中怎么调用指定的构造方法:super(参数);且super(参数)是写在子类构造方法的第一行,如果子类构造方法中没有super那么就是默认super();B.如果在子类中一定要执行父类的某个构造方法,那么就super.Method(参数)C.先静态方法(静态代码块),后构造方法。在声明阶段时候:static就会被创建。7.重写(Override)的原则和原因:原则:A.同名,同参,同返回值,顺序和个数一致;B.接口的重写方法的修饰符只能大于或者等于父类的修饰符。C.子类重写的异常只能小于等于父类的异常。原因:如果发现父类的行为不能解决子类的问题,那么我们就重写父类的行为(覆盖父类的行为)。8.重写(Override)与重载(Overload)的区别:A.重载在一个类中:同名,不同的参数个数或者类型。B.重写在继承关系中:同名,同参。9.四大修饰符合基本数据类型:private它修饰的属性,方法都只能在本类中访问public它修饰的,是所有类都可以访问缺省它修饰的,只能在本包中访问protected它修饰的只能在本包以及子类中访问修饰符本类本包不同包的父子类其他类Private√friendly√√Protected√√√(子类)Public√√√√基本数据类型:Boolean,byte(1),char(8),short(16),int(32),float(32),double(64),long(64)(大小:-2的(次方)-1~~~~2的(次方))10.类与类的关系(对象与对象的关系):一对多的关系;多对多的关系;一对一的关系(讨论:角色,用户,权限之间的关系);(重写toString可以输出所有的属性)11.类和对象的定义,关系与区别定义:类的概念:类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系组成的。关系:类与对象的关系就如模具和铸件的关系类的实例化结果就是对象,而对一类对象的抽象就是类.类描述了一组有相同特性(属性)和相同行为(方法)的对象。区别:A.类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。B.对象是类的一个具体。它是一个实实在在存在的东西。C.类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。D.对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。12.多态的定义,表现形式,作用,例子;定义:多态指同一个实体同时具有多种形式。表现形式:方法的多种表现形式:方法的多态(通过:重载与重写来完成);对象的多种表现形式:对象的多态(通过继承来完成,只有在运行是才能确定父类的引用具体指向哪一个对象)作用:提高代码灵活性,可以重用以及拓展(提高代码的可拓展性(兼容),可维护性)可拓展性:当增加一个需求时候,我们不需要修改一个类中的方法。(就说功能强,兼容强,拓展好)例子:通过父类来达到兼容子类(publicvoidjudge(classc)class就是父类。只有在这个方法运行时候我们才可以知道judge的方法指向那个对象)13.封装的定义,表现形式,作用,例子;定义A.封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。B.封装把对象的所有组成部分组合在一起;封装定义程序如何引用对象的数据?封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。作用:A.对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。B.对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。14.控制反转控制反转(InversionofControl,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。控制反转一般分为两种类型,依赖注入(DependencyInjection,简称DI)和依赖查找(DependencyLookup)。依赖注入应用比较广泛。15.OOP百度百科,J2EE百度百科J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制;16.Exception(异常)学习异常的原因,怎么处理异常(1.编译时异常,2,运行时异常);概念:(concept)就是java.lang.Exception(所有具体异常父类)这个类用于表示异常(异常不等于错误);java.lang.Throwable的子类和java.lang.Error都是Throwable的子类方法:(method)Exception()构造详细消息为null的新异常。Exception(Stringmessage)构造带指定详细消息的新异常。Exception(Stringmessage,Throwablecause)构造带指定详细消息和原因的新异常。Exception(Throwablecause)常用的实例方法voidprintStackTrace()将此throwable及其追踪输出至标准错误流(默认是在控制台输出)。StringgetMessage()返回此throwable的详细原因。处理异常:try{写代码}catch(异常类变量){处理异常}......catch(异常类变量){处理异常}Finally{不管发生还是不发生异常finally都会执行}(运行时候:System.exit(0)关闭进程)17.final和finally的区别,throw与throws的区别final是定义常量的关键字,而finally是在异常中最终执行的关键字throw是抛出异常对象,写在方法里面的;throws是抛出异常类,写在方法头。为什么要使用throw,throws?throw,throws这2个关键字一起使用吗?如果是写了throw,throw后面不是运行时异常carch(exceptione){thrownewRuntimeException()}那么throws一定要写;如果throw后面是运行时异常(thrownewRuntimeException())那么throws可以不写;反过来如果写了throws那么throw可以不写,但是在调用这个方法里面一定要处理。throws我们一般用于判断方法体是否出现错误自定义异常我们的异常只有那么多在开发中远远不够所以我们可以自定义异常做法classMyExceptionextendsException或者Throwable{写4个构造方法这4个构造方法的参数分别与Exception或者Throwable一致4个构造方法中我们就可以一行代码super(参数分别是构造方法的参数)}例子:publicclassMyExceptionextendsException{publicMyException(){}publicMyException(Stringmessage){super(message);}publicMyException(Stringmessage,Throwablecause){super(message,cause);}publicMyException(Throwablecause){super(cause);}}18.类图怎么画(类图百度百科)加号(+)表示public;减号(-)表示private;#号表示protected;省略这些修饰符表示具有package(包)级别的可见性。继承(Inheritance),关联关系(Association),聚合关系(Aggregation),复合关系(Composition),依赖关系(Dependency)。19.UML(UnifiedModelingLanguage)图(UML百度百科)(说明:UML中的类图,建议采用office系列中的visio来画)20.E-R图(E-R百度百科)21.StingexetendsObjectimplementsSerializable,ComparableString,CharSequenceSerializable:序列化,便于在网络中传输和保存;Comp

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功