java基础面向对象(下)

 ------- android培训java培训、期待与您交流! ----------

接口:
抽象类是从多个类中抽象出来的模板,如果将这种抽象进行的更加彻底,就提取出了一个更加特殊的抽象类就是接口。
接口的出现使类在继承父类的同时又可以实现一个多着多个接口。弥补了不能多继承的缺点。
例如:class a extends b implements c,d
可以理解为一个特殊的抽象类,接口中的方法都是抽象的与抽象类不同,抽象类中的方法可以为非抽象方法。
接口中常见的定义:常量和抽象方法。
它们都有固定的格式:常量:public static final 抽象方法 public abstrac。
接口是不可以创建对象的,因为有抽象方法,需要被子类实现,只有当子类全部实现接口中的抽象方法时,子类才可以创建对象,否则子类是一个抽象类。
值得注意的是:实现接口的方法时,必须使用public访问控制符,因为接口中的方法都是public的,而实现类实现接口的方法时访问权限必须大于等于,所以
实现类中实现接口里的方法只能使用public
错误提示为:

接口的继承:接口的继承和类的继承不一样,接口支持多继承,例如:


总结一下抽象类和接口的区别:
1,接口里只能包含抽象方法,不包含普通方法,抽象类里则完全可以包含普通方法。
2,接口里不能定义静态方法;抽象类里可以定义静态方法。
3,接口里只能定义静态常量,不能定义普通常量;抽象类可以定义普通常量也可以定义静态常量。
4,接口里不包含构造函数;抽象类则可以包含构造函数,抽象类里的构造函数并不是为了创建对象,而是为了让子类调用这个抽象类的构造方法完成抽象类的初始化操作。
5,接口里不包含代码块;抽象类里则可以包含初始化块。
6,一个类只能有一个直接父类,抽象类也是;但一个类可以实现多个接口,通过实现多个接口,弥补了java中的单继承不足。

多态性:
它可以理解为事物存在的多种体现形态。那么在java中是如何出现的呢?因为java中引用变量有两个类型:一个是编译时期类型,一个是运行时期类型。
编译时类型由该引用变量所使用的类型决定,运行时类型由实际赋值的对象所决定。如果在编译时类型和运行时类型不一致,就可能出现所谓的多态(Polymortphism)
多态的体现:父类引用指向子类对象。多态的前提:类与类之间必须存在关系,可以是继承关系也可以是实现关系。
值得注意的是:
1,只有当父类引用指向子类对象时,我们才可以对这个引用,进行向下转型,强制转换成这个子类对象的引用。
2,当父类引用指定子类对象时,也就是向上转型时,这个引用变量在编译时期是父类,而在运行时期这个引用变量是子类,在运行时期调用该引用变量的方法时,其方法总是表现出子类的方法行为。
3,成员变量不具备多态性。静态方法也不具备多态性。
下面通过一个例子消化下这些知识点:

内部类:
大部分时候我们把类定义成一个独立的程序单元,在某些时候我们把一个类方法另一个类的内部,这个定义在其他类内部的类就称为内部类。包含这个内部类的类叫外部类。
访问特点规则:
内部类可以直接访问外部类的成员,包括私有的成员。因为在内部类中持有外部类的引用:外部类名j.this.
外部类要访问内部类的成员要建立内部类的对象。
当内部类定义在外部类的成员位置上,并且非私有,外部其它类就可以直接建立内部类对象:格式 外部类名.内部类名  变量=外部类对象.内部类对象
当被不累在外部类的成员位置上,则可以被成员修饰符修饰,比如:private 私有的,将内部类在外部类中封装。
也可以用static 静态的修饰,成为静态内部类。当被static修饰后只能访问外部类的静态内容。
外部其它类访问静态内部类的成员格式:new Outer.Iner().function();
外部其它类访问静态内部类的静态成员格式:Outer.Iner.function();
值得注意的是:当内部类中定义了静态的成员时那么这个内部类也必须是静态的。当外部类静态方法访问内部类时那么这个内部类也必须是静态的。
内部类被定义在局部时(方法中)可以访问外部类成员,因为还持有外部类引用,但是不能访问它所在的局部变量,只能访问final修饰的局部变量。
匿名内部类:
1,匿名内部类其实就是内部类的简写格式:
2,定义内部类的前提是:必须继承一个类或者实现一个借口
3,匿名内部类的格式:new 父类或者借口() {  定义子类的内容 }
4,匿名内部类其实就是一个匿名子类对象。


异常机制:
就是在程序运行时出现的不正常的情况。其实就是java对不正常情况进行描述后的对象体现。
异常分为:严重问题和非严重问题。
对于严重问题:java中用Error类描述。
对于Error类一般不写针对性的代码进行处理
对于非严重问题:java中用Exception类进行描述。
要使用针对性的语句进行处理。
Throwable 类是 Java 语言中所有错误或异常的超类。Error和Exception就是Throwable拥有的两个子类。
Java中提供了异常处理语句:
第一种处理方法:
try{
容易出现异常的语句。
}
catch(异常类 变量){
处理的方法
}
finally{
一定要执行的语句。
}
第二种处理方法:throws关键字:表明该功能可能出现异常。抛异常最终是让JVM处理。
JVM默认的异常处理机制,就是在调用printStackTrace方法打印异常的堆栈异常信息。
对多个异常的处理:
1,声明异常时建议声明更加具体的异常,以便处理的更加具体。
2,声明几个异常就对应几个catch块不要定义多余的catcht块。
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
throws 和throw的区别:
throws用在函数上,throw用在函数内
throws后面跟异常类,可以是多个用逗号隔开
throw后面跟对象 
Excepyon类中有一个特殊的异常,RuntimeException 运行时异常。
如果在函数内throw 该异常,那么函数上可以不用声明异常。如果在函数上声明了该异常调用者可以不用处理,编译可以通过。
对于异常分为两种:编译时期异常,运行时期异常(RuntimeEexception以及其子类)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值