继承和接口和java访问权限修饰符总结

上传人:痛*** 文档编号:65431911 上传时间:2022-03-23 格式:DOC 页数:10 大小:72KB
收藏 版权申诉 举报 下载
继承和接口和java访问权限修饰符总结_第1页
第1页 / 共10页
继承和接口和java访问权限修饰符总结_第2页
第2页 / 共10页
继承和接口和java访问权限修饰符总结_第3页
第3页 / 共10页
资源描述:

《继承和接口和java访问权限修饰符总结》由会员分享,可在线阅读,更多相关《继承和接口和java访问权限修饰符总结(10页珍藏版)》请在装配图网上搜索。

1、继承和接口和java访问权限修 饰符总结第三章,第四章内容总结-Mr yang多态性:发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。动态绑定 :一、使用父类类型的引用指向子类的对象;二、该引用只能调用父类中定义的方法和变量;三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中 的这个方法;(动态连接、动态调用)四、变量没有被重写(覆盖)的概念,”重写“的概念只针对方法,1. 方法重载 : 在同一个类中定义了两个以上的同名的方法, 但是它们拥有不同的参数列表。1.1 重载的条件:参数不同a. 个数不相同b.

2、 类型不同*c. 顺序不同 注意:与方法的返回类型无关 , 和访问修饰符无关2. 方法重写 :在子类中定义了一个和父类中相同的方法 , 父类的方法在子类中就被覆盖了(隐藏了) .3. 动态绑定:父类的引用指向子类的对象,如果调用的方法 在子类中被重写,则调用子类重写了的方法。 如果调用的方法在父类中没有定义,则报错。访问修饰符 :1. public2. protected3. private4. 默认的 方法修饰符:1. static: 静态方法中不能访问非静态的变量和方法,也不能使用 this 和 super 关键字 static 关键字修饰的代码不依赖具体的对象实例 . 总是比普通的代码块

3、先加载2. final: 能修饰类 ,方法 ,属性。2.1:final 修饰类时:该类不能被继承 .2.2:final 修饰方法时:该方法不能被重写 .2.3:final 修饰类的成员属性时:声明时就要赋值,或者在构造方法中给它赋值 final 修饰类的属性时:必须在声明时赋值final 修饰局部变量:如果在声明时没有赋值,则在后面的代 码中可以有一次给它赋值的机会,一旦赋值则该变量的值 不可更改。final 修饰的变量是引用类型时指引用不能更改,引用指向的对象的属性值是 可以更改的 .Final 表示最终的3. abstract: 修饰类,方法 .抽象方法使用 abstract 修饰符修饰

4、抽象方法只能在抽象类中声明。即:如果一个类中存在一个或以上的抽象方法,则该类也要声明为抽象类。3.1: 抽象类不能实例化对象。3.2: 抽象类中可以有抽象方法,也可以有普通方法。3.3: 构造方法不能声明为抽象的,因为子类无法覆盖。3.4: 子类继承抽象类时必须重写父类中所有的抽象方法,否则自己也要声明为抽 象类 .3.5: 可以声明抽象类的引用指向子类的对象。 动态绑定4 接口: 关键字 interface 声明接口。解决 java 不能多重继承的机制。1. 接口中的方法都是抽象的。2. 接口中的方法默认时 public 和 abstract, 所以 public 和 abstract 可以

5、省略3. 接口中可以声明属性,属性默认为public static final4. 接口使用关键字 interface 声明,使用 implements 实现接口 .问题 : 接口和抽象的区别 ?相同点区别 :继承 :代码的可重用性抽象类: 代码的灵活性固定的方法 ( 数据库 )接口 :代码的可扩展性java 访问权限修饰符 public protected default private 用法总结首先声明: java 中, default 这个修饰符并没有显式的声明,在成员变量和方法前什么修 饰符也不用,默认的就是 default 。为了条理清晰,分三种不同情况来总结。一 访问权限修饰符修饰

6、成员变量和方法public :表明该成员变量和方法是共有的,能在任何情况下被访问。( 说的比较简单,看个例子就明白protected :必须在同一包中才能被访问及其子类中可以了)eg:class Aprotected int weight;protected int f( int a,int b)/ 方法体假设 B 与 A 在同一个包中,则class Bvoid g()A a=new A();A.weight=100;/ 合法 A.f(3,4); / 合法特别说明:什么是在同一个包中?package答:用 package 打包在一起的 class , 叫在同一个包中。 ( 不明白,举个例子 )

7、 eg: 在 JDK 的 srcjavaio 中,你会看到许多 java 类, 第一句源代码都是 java.io;没有使用 package 打包的,在同一目录下的类也会被视做同一个包。default :在这种情况下中,同包中的子类。区别在第二和第三种情况中。 eg: class Aint weight ;int f( int a,int b)/ 方法体假设 B 与 A 在同一个包中,则class Bvoid g()A a=new A();A.weight=100;/ 合法 A.f(3,4); / 合法private: 只能在本类中访问。eg: class Testprivate int mon

8、ey;Test() money=2000;private int getMoney()return money;public static void main(String args)Test te=newTest();te.money=3000; / 合法int m=te.getMoney(); / 合法 PS : 实际上,把重要的数据修饰为 private ,然后写一个 public 的函数访问它,正好体 现了 OOP 的封装特性,是 OOP 安全性的体现。二 访问权限修饰符修饰类1 ,不能用 protected 和 private 修饰类。2 ,用 default 修饰的类叫友好类,在另

9、外一个类中使用友好类创建对象时,要保证它们在 同一包中。三 访问权限修饰符与继承 这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:1 ,子类与父类在同一包中此时只有声明为 private 的变量与方法不能被继承 ( 访问 ) eg:class Fatherprivate int money ;int weight=100;class Son extends Fatherviod f()money=10000;/ 非法 weight=100; / 合法 2, 子类与父类不在同一包中 此时 private 与 default eg:Father.javapackage com.aaap

10、ublic class Fatherint height ;protectedint money=120;public int weight;protected int getMoney()return money;void setMoney(int newMoney)money=newMoney;Son.javapackage com.bbbvoid f()money=10000;/合法/height=170;/非法,int number=getMoney();均不能被继承 ( 访问 ) , protected 与 publicheight 为 default 修饰的变量 输出结果是 100

11、00/ 非法/ 合法输出结果是 10000public static void main(String args) Son sss=new Son();sss.f();可以所以,访问权限修饰符权限从高到低排列是 public ,protected ,default, privateJava 中的 abstract,static,final 修饰符abstract 修饰符abstract 使用对象:类、接口、方法 介绍:类中包括没有实现的方法,不能被实例化。如果是一个 abstract 方法,则方法体 为空,该方法的实现在子类中被定义,并且包含一个 abstract 方法的类必须是一个 abst

12、ract 类abstract 修饰符表示所修饰的类没有完全实现,还不能实例化。如果在类的方法声明中 使用 abstract 修饰符,表明该方法是一个抽象方法,它需要在子类实现。在下面的情况下,类必须是抽象类:1. 类中包含一个明确声明的抽象方法 ;2. 类的任何一个父类包含一个没有实现的抽象方法 ;3. 类的直接父接口声明或者继承了一个抽象方法,并且该类没有声明或者实现该抽象 方法。如下例所示:abstract class A1public int v1; abstract void test();abstract class A2 extends A1public int v2;class

13、Sample extends A2void test() 因为包含一个抽象方法 test, 类 A1 必须被声明为抽象类。 它的子类 A2 继承了抽象方法test ,但没有实现它,所以它也必须声明为抽象类。然而,A2的子类Sample因为实现了 test ,所以它不必声明为抽象的。如果试图创建一个抽象类的实例就会产生编译错误 ; 如果一个类是非抽象类却包含一个抽象方法,就会产生编译错误;构造函数和静态函数以及 Final 修饰的函数不能使用 abstract 修饰符 ;接口缺省为 abstract 。Static 修饰符static 使用对象:类、方法、变量、初始化函数 通常,在创建类的实例时

14、,每个实例都会创建自己实例变量。但是在变量的声明中可以使 用 Static 修饰符,它表明该成员变量属于类本身,独立于类产生的任何对象。这种成员变量称 为静态变量 (静态属性) 。方法的声明中也可以使用 static 修饰符, 表明该方法从属于类本身。静态属性和静态方法不需要创建实例就可以使用。典型的例子是 java.lang 包中的 System 类中的方法和变量。我们常用“message”);输出信息,并没有创建 System 的实例,是因为 println 方法声明为 System 类的静态方法,它不需创建实例就可以使用。下面的例子会帮助你更深刻的理解 Static 修饰符。注意各个代码

15、块的加载次序。class Samplestatic int s1=3;static int s2;static void display()statics2=s1+1;public static void main(String args)Sample.display();一旦这个类被调用,所有的静态变量都被初始化, s1 被赋为 3,然后运行 static 块, 这将打印出一段消息,并且把s2 赋为 s1+1 ,即 4。然后解释器调用 main 成员函数,它调用了成员函数 display ,该函数输出 s1 和 s2 的信息。运行结果如下:C:java Samplestatic blocks

16、1=3s2=4通过上面的例子还可以看出,一个静态成员函数可以通过它所属的类名来调用。在静态成员函数中只能直接调用其它的静态成员函数或引用静态属性,否则会造成编译错 误。静态成员函数中也不能使用 this 或者 super ,因为它们是和类的对象相关联的。final 修饰符final 使用对象:类、方法、变量介绍:被定义成 final 的类不允许出现子类,不能被覆盖,字段值不允许被修改。如果一个类是完全实现的, 并且不再需要继承子类, 则它可以声明为 Final 类。如果 final 类的名字出现在另一个类声明的 extends 字句的后面就会产生编译错误。这表明 final 类不能 有任何的子类。类不能同时被声明为 abstract 和 final ,因为 abstract 类中的 abstract 方法 永远没有机会被实现。例如:class FinalSamplefinal int MAX_VALUE = 100;public static void main(String args) FinalSample a =new FinalSample();表示,MAX_VALUE勺值为100,并且不能再更改。final变量用大写标识符是一个一般 的约定。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!