第4课 面向对象下

4课 面向对象下

 必须掌握内容

1、继承

Java支持单继承不允许多继承 可以有多层继承 子类继承父类的所有成员变量和成员方法但不继承父类的构造方法在子类的构造方法中可以使用super语句调用父类的构造方法 但是如果子类中没有显式地调用父类的构造方法 也没有使用this关键字调用重载的其他构造方法 则在子类的实例对象中默认调用父类无参数的构造方法

如果定义了一个或多个参数不同的构造函数 则系统就不会自动调用父类的无参数的构造函数 但是最好还是新建一个无参数的构造函数 因为系统在调用父类的时候 会首先调用其无参数的构造函数 而在子类中如果定义了有参数的构造函数 则不会产生一个无参数的父类构造函数 那么在编译的时候就找不到这个无参数的构造函数 因为编译器会报错

this调用某些构造函数的时候 有些情况类似于super函数 

隐式调用就是系统会自动调用super函数

Super函数和this函数不能同时存在  其都只能作为第一句出现

子类改写父类方法后 调用是只调用子类方法 要想调用父类方法 只能用super super方法是父类方法 而不是该方法在子类中的重写

重写方法时不能将方法的访问权限变低

2Final定义变量时候赋值 或者在构造方法中赋值 

变量加上static时 可以用类名点变量名来访问 但是必须在定义时初始化

3、抽象类

Java定义一些不含方法体得方法 其方法体交友该类的子类根据自己的情况去实现 这样的方法称之为抽象方法 包含抽象方法的类就叫做抽象类

抽象类必须有abstract关键字修饰 抽象方法也是由abstract修饰 抽象类不能被实例化也不能用new产生一个对象 其只需要声明 但不必去实现 但是抽象类的子类必须覆盖所有的抽象方法后才能别实例化 否则其子类称之为抽象类

其实抽象类等同于一个接口

4接口

接口就是抽象方法和常量值的定义的jihad 从本质上讲 接口就是一种特殊的抽象类 这个抽象类中只含有常量和方法的定义 没有方法和常量的实现

接口中的成员都是public 变量默认为public static final 是不能轻易改变的 

在接口可以用extends关键字来继承一个已有的接口 也可以用一个类加上implements关键字去实现一个接口中的所有方法 还可以定义一个抽象类用implements去实现接口中的部分方法

一个类可以继承一个父类的同时也可以实现一个或者多个接口 extends关键字必须位于implements之前

同一目录下类可以互相调用 

父类定义的静态常量 可以用子类名点常量名引用

对象的类型转换 子类对象能自动转换成父类

父类转换成子类就必须使用强制类型转换

Ifa instanceof b)判断a是否为b的对象

匿名内部类

abstract class A
{
abstract public void fun1();
}
class Outer
{
public static void main(String [] args)
{
new Outer().callInner(new A()
{
public void fun1()
{
System.out.println("implement for fun1");
}
});
}
public void callInner(A a)
{
a.fun1();
}
}

5、异常

不是编译时的语法错误 是一种非致命的错误

Try catch 语句   try{执行语句如果异常 则执行catch{}语句

Catchexception e

{

System.out.println(e.getMessage());中的e.getMessage()是获取错误信息

执行完catch语句之后才会执行其他语句

如果try中语句异常 系统生成一个异常对象 也就是catch语句中的e e就是异常对象 有时候也被定义为ex

如果有可能发生异常 则可以用throw exception来抛出异常 此时必须使用try  catch语句处理可能出现的异常

如果不想使用try catch语句处理误

定义异常类 如果是异常类 必须继承exception 异常类的构造函数可以调用super生成自己的异常对象并抛给外面

Throw new---可以声明多个异常对象个抛出

Try 后可以跟多个catch e.exception trace()直接将异常对象抛出

根据异常类型的不同 执行不同的catch语句

如果异常没有可以匹配的catch语句 则执行Catchexception e

语句 此语句不可以放在其他catch语句之前 否则其他的异常处理语句不会被执行 因为其他的异常语句都是Catchexception e)的子类

并不是异常才可以使用try catch语句 其他情况也可以使用 比如选择 跳转语句等等

catch语句后加上final语句 其意义就是说不管有没有异常发生 都会执行final语句的内容 即给程序提供一个统一的出口

注意 如果try语句或者catch语句中有return语句 则其他语句可能不被执行 但是final可以被执行 

Final唯一不被执行的情况是前面有system,exit() 

子类中不能抛出新的异常 子类总的异常不能比父类多 只能比父类的少


6、包 包就相当于是文件夹

package语句及应用
package语句作为Java源文件的第一条语句。如果没有package语句,则为缺省无名包。 
import语句及应用 
jdk中常用的包
java.lang----包含一些Java语言的核心类,如StringMathIntegerSystemThread,提供常用功能。
java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)
java.applet----包含applet运行所需的一些类。
java.net----包含执行与网络相关的操作的类。
java.io----包含能提供多种输入/输出功能的类。
java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。

7Java的命名习惯

下面是java中的一些命名习惯,假设xxxyyyzzz分别是一个英文单词的拼写。
包名中的字母一律小写,如:xxxyyyzzz
类名、接口名应当使用名词,每个单词的首字母大写,如:XxxYyyZzz
方法名,第一个单词小写,后面每个单词的首字母大写,如:xxxYyyZzz
变量名,第一个单词小写,后面每个单词的首字母大写,如:xxxYyyZzz
常量名中的每个字母一律大写,如:XXXYYYZZZ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值