经过一些练习,发现之前对Java里类和异常处理等知识理解地依然不够全面,所以特此补充。
对包的补充:新建包(package)是因为:默认包的缺陷就是没法被其他包(import)引用,例如:默认包(default package)不支持jsp页面import导入默认包中的程序。
01
—
父类与子类的转换
向上转换:子类对象自动转换为父类(父类申明-子类创建)。
向下转换:曾是子类对象,但被转换为父类,接着又被重新强制转换为子类(子类申明-子类强制转换)。
例:
运行结果为:
子类转为父类只需要:父类申明-子类创建。
父类转为子类只能是:子类申明-子类强制转换-曾经被转换为父类的子类对象(现在又要重新转化为子类对象)。
PS:转化为父/子类对象其实是指一种数据类型(比如子类)赋值给了另一种数据类型(比如父类),恰如:int x=float y;【基本数据类型替换成类就成了】
02
—
exception异常处理
不知道咋个处理异常:main主函数后面throws异常。
异常提示结果:
JVM对异常的处理方式是:打印异常的跟踪栈信息并终止程序运行。
2.知道如何处理异常(自己定义处理异常的方法):
第一步:定义Exception的子类作为具体处理异常的模块(判断出异常时被主函数调用)。
第二步:判断异常标准的代码后面加上【throw new 自定义的Exception的子类名】
运行结果:
3.Java自动能检测到的异常:使用Exception捕捉,然后自定义代码来处理异常。自动检测异常,当然,如果想要分门别类地处理异常就要用Java自带的异常关键词(如FileNotFoundException)。(这种情况仅限于Java自带异常能检测到的情况)
简单的异常处理可用此法,Java自带的异常关键词若解决不了就要用方法二自定义异常判断和自定义异常处理了。
03
—
接口的作用
运行结果:
接口作用:
接口的多重继承特性使得接口中的类可以对接口申明的抽象方法进行不同的重写,一个抽象方法可以被不同的类重写使用。所以对于常用的方法,可以申明在接口中,通过接口中不同类的重写,实现【真·接口】的效果。
接口里的类若定义了接口中没有的方法:这种方法若无参数传递,那么用接口申明的对象依旧可以引用;但这种方法若有参数传递,那么接口申明的对象没法调用,只能是该类申明并创建的对象引用得了。
PS:接口申明的对象可以引用接口中未定义的方法,但是有参数传递的方法引用不了(可以将有参数传递的情况看作是接口中没有接受参数的形参,所以引用不了)。
04
—
类作为数据类型
自定义类定义的变量能被赋值的情况:
被赋值为new 构造方法名()
接收从类中返回的值:return this
对于a是很常见的:传参或不传参的构造方法;对于b则是接收返回,而返回应当是return this(this代表了该自定义类的类型数据值)。
实际上这两种形式恰是基本数据类型的赋值操作:【例: int x=2 和 int x=return_x 这样的操作分别对应了A x=new A() 和 A x=return_this】
因为自定义类和int这样的基本数据类型在赋值上的区别就是:自定义类更像是一种结构,而基本数据类型则对应具体的类型数值。
小结:
类赋值操作本质上就两种情况:构造方法或return this
接口定义的抽象方法可被接口中的不同类实现不同地重写——真·接口;接口申明的对象可以引用接口类中的方法(但有参数传递的方法引用不了)
父子类定义的对象间的转换:(直接转换)子类—>父类;(间接转换:强制类型+曾转化为父类的子类重新转成子类)父类—>子类
自定义异常:throw+extends Exception;不知道怎么处理异常:main后throwsException;简单异常处理:try、catch(Java自带的各类Exception)
领取专属 10元无门槛券
私享最新 技术干货