第二小节之面向对象下

继承:描述书屋之间的所属关系,在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有的类被称作父类,子类继承了父类的特征(所有可继承的属性和方法)

派生:父类派生出了子类

子类是父类的特类,子类是父类型。一个子类对象可以看作一个父类、

在java中类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类,多个类可以继承一个父类,可以多层继承,子类和父类是一种相对概念

在调用子类中无参的构造方法,它会调用父类的无参的构造方法

重写父类方法:

  在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型

  不能使用比父类中被重写的方法更严格的访问权限:private、protected、public

 

当子类重写父类的方法后,子类对象将无法访问父类被重写的方法,在java中用super关键字用于访问父类的成员。

super调用父类的构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次

 

final关键字可用于修饰类、变量以及方法,表示最终的含义:

  1、final修饰的类不能被继承

  2、final修饰的方法不能被子类重写(只能继承,把方法锁定,以防止任何继承类修改它的含义)

  3、final修饰的变量(成员变量和局部变量)是常量(就用static生成一个内存区,不必浪费内存空间),只能赋值一次

  

抽象定义:抽象就是从多个事物中将共性的、本质的内容提取出来

抽象方法不需要方法体,抽象方法对应抽象类,类是抽象的只能作父类(abstract),不能用来创建对象,如果要创建对象,必须去把抽象方法具体化(即继承这个抽象类)

抽象方法:abstract 函数类型 函数名(参数列表); //包含抽象方法的类必须声明为抽象类,但是抽象类可以不包含任何抽象方法,只需使用abstract关键字修饰即可

abstract不与final、static连用

接口(interface)是最纯粹的抽象类(类中的方法都是抽象的)

interface 接口名{
  变量类型 变量名=常量值;
  方法类型 方法名();          
}

  接口中定义的方法和变量名都包含一些默认修饰符:方法使用public abstract修饰,变量用public static final修饰

接口与类:implements,可以实现多个接口,接口与接口之间用逗号隔开

接口与接口:extends,可以继承多个接口,接口与接口之间用逗号隔开

一个类在继承另一个类的同时还可以实现接口,此时,extends关键字必须位于implements关键字之前

 多态:一个名称多种实现

  1、重载(overload):定义多个名称相同参数不同的方法

  2、覆盖(override):在子类中定义与父类声明相同的方法(1、equals:比较两个对象的内容是否相同 2、==:判断两个对象是否为同一个对象的不同引用)

java提供了一个关键字instanceof,它可以判断一个对象是否为某个类(或接口)的实例或者子类实例,语法格式为:对象(或者对象引用变量) instanceof 类(或接口)

JDk中提供了一个Object类,它是所有类的父类,即每个类的父类,即每个类都直接或间接继承自该类

hashCode()是object类中定义的一个方法,这个方法将对象的内存地址进行哈希运算,返回一个int类型的哈希值

异常:以异常类(Throwable)的形式对这些非正常情况进行封装

  1、error:通常出现重大问题:如运行的类不存在或者内存溢出。不编写针对代码对其处理,仅修改程序本身是不能恢复执行的

  2、Exception:在运行时进行出现的一起情况,可以通过try——catch——finally(必须执行,除非遇到System.exit(),return都不行)解决

Syetem.out.println() //黑体  System.err.println()  //红色

Throwable常用方法:、
String getMessage()  //返回此Throwable的详细消息字符串
void printStackTrace()  //将此throwab及其追踪输出至标准错误流
void printStackTrace(printStream s)  //将此throwa及其追踪输出到指定的输出流

一个try可能带多个catch,try中含有多个不同异常分别对应多个catch处理1、写多个catch时,需要从子类写到父类的异常。2、写一个catch时,直接写Exception e

catch代码块对异常处理完毕后,程序仍会向下执行,而不会异常终止,在try代码块中,发生异常语句后面的代码是不会被执行的。

throws 用在函数上,后面跟异常类(在main函数抛出异常,不负责任,系统将强制关闭)

throw用在函数内,后面跟异常对象

包:package(需要注意:包的声明只能位于java源文件的第一行)

如果用到一个包中的许多类使用“import 包名.&;”来导入改包所有类

访问控制级别

       private     default    protected   public

同一类中   1              1                1             1

同一包            0              1                1              1

子类中        0             0                1              1

全局范围          0             0                 0              1

posted @ 2018-12-15 19:49  醉画仙  阅读(182)  评论(0编辑  收藏  举报