java编程笔记7 面向对象二
1, 包的定义 package必须作为java源文件的第一条语句: package packagename; 如果省略了package语句,将放入默认包中,默认包没有名字。包以目录的形式组织
引入包中的类:import语句
java.lang包是java语言的核心类库,是java程序运行必不可少的系统类库,系统会自动引入,不需要使用import再引入。
2, 类中变量和方法的访问权限 注意:类前面的的权限修饰符只能是public或者没有(缺省),缺省的类只能在本包中使用,public的类可以在所有包中使用。 这里要说的是类中成员变量和方法的访问权限,它们可以用public,protected,缺省,private修饰。
访问权限 同一类中 该类的子类 同一包中 其他包
public 可以 可以 可以 可以 protected 可以 可以 可以 子类可以 缺省 可以 可以 可以 不可以(子类也不行) Private 可以 不可以 不可以 不可以 关于访问权限,http://wenku.baidu.com/view/526b0babd1f34693daef3e83.html总结的相当详细,已下载下来了,这里贴不上去 垃圾啊,文章长一点就得分两次 3, 类的继承 Class ChildClassextends FatherClass { //继承父类的部分成员变量和方法,不用重复代码 ……扩展的的成员变量或方法 } 规则: 子类和父类在同一个包中: 子类继承父类中public,protected,友好型(即缺省,对本包友好)的成员变量和方法,不能继承私有的成员变量和方法 子类和父类不在同一个包中: 子类继承父类的public,protected成员变量和方法,不能继承私有和友好的成员变量和方法
覆盖:指子类拥有跟父类相同的的成员变量或成员方法。 覆盖可以隐藏父类中的成员变量和方法,覆盖的目的是通过在子类中重新定义变量和方法来扩展父类的功能,注意这里的重新定义指的是:返回类型,名字,参数完全完全相同,只有这样,才叫做覆盖了。(父类被遮盖了),覆盖方法的访问权限不能比原方法的低。
在子类的对象调用的时候,首先看扩展的方法中有没有,没有的话才去调用从父类继承的方法(事实上有了覆盖之后,被覆盖的从父类继承来的方法就看不见了)
4, 类的多态性 当子类从某个父类继承来时,可能要修改父类中某个方法的实现方式(覆盖),当子类的方法被调用时,启用的是该子类的方法。当方法被不同的对象调用时,产生不同的行为,这就是多态。
5, 抽象类 抽象类是专门用作其他类的父类来使用的,抽象类不能创建对象。 包含抽象方法的类叫做抽象类(可能也含有非抽象方法) 抽象方法指只有声明没有具体实现的方法。
abstract classClassName { ….. abstractreturnType method(); ….. …. }
6, 接口 interface 接口名 { //接口体中的变量和方法 }
注意: 1) interface只能被public修饰或者不修饰,public修饰的可以被任意一个类使用,不修饰的称为友好接口,只能被本包中类使用。 2) 接口中的变量全部是static常量,即static final的,这是默认的,省略static final也可以。 3) 接口中的方法全部是抽象方法,abstract也可写可不写。(只能用public修饰或者缺省) 4) 一个类通过关键字implements声明自己使用(实现)一个或多个接口: class ClassName implements interface1,interface2 { //要实现接口中的所有方法,方法必须和接口中的声明完全一致 } 5) 接口的继承: 利用extends,接口也可以继承另一个接口,语法与类相同,当一个类实现了一个接口,而这个接口继承了另一个接口时,这个类必须实现所有接口中的方法。 |