java抽象类与接口的自学入门_第1页
java抽象类与接口的自学入门_第2页
java抽象类与接口的自学入门_第3页
java抽象类与接口的自学入门_第4页
java抽象类与接口的自学入门_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、abstract class Apublic abstract void f();class B extends Apublic void f()System.out.println("哈哈");public class TestAbs_1public static void main(String args)/A aa1 = new A(); /errorA aa2 = null; /可以定义一个抽象类的引用aa2 = new B(); /将子类对象的地址赋给抽象类的引用aa2.f(); /用抽象类的引用访问子类的方法 这就是多态abstract class A /如果f

2、方法没有方法体,则必须的在class前加 abstract 如果f方法含有方法体,则class前面可加也可不加abstract ,因为“一个抽象类中是可以不包含任何抽象方法,尽管比较少见”private int i;public abstract void f(); /如果f方法没有方法体,则f方法必须的声明为抽象方法,即必须的在前面加abstractclass TestAbsClass_1public static void main(String args)System.out.println("今天我很高兴!");/*不能new 出抽象类对象,但可以用抽象类的引用指向

3、抽象类的子类对象,即抽象类也可以实现多态*/abstract class Aabstract public void f();class B extends Apublic void f()System.out.println("BBB");public class TestAbsClass_2public static void main(String args)/A aa = new A(); /error 不能new 出抽象类对象 A aa = new B(); /OKaa.f(); /多态class A /如果在class前面加final 编译时程序就会报错clas

4、s B extends Apublic class TestFinal_1public static void main(String args)class A /如果在class前面加final 编译时程序就会报错class B extends Apublic class TestFinal_1public static void main(String args)/*final类型修饰的属性必须在定义的同时初始化如果final类型修饰的属性没有在定义的同时初始化,则必须在该类中的所有构造函数中完成初始化不过这两种初始化只能存在一种,否则编译时会报错!因为final表示常量的意思,常变量当然

5、不能被初始化两次了*/class Pointint x;final double PI = 1.9; /10 final定义的变量必须在定义的同时初始化 如果这里只定义不初始化则我们就必须在所有的构造函数中完成对final变量的初始化 不过这两种方式只能选择其中的一种Point()/PI = 1.234; /只要10行对PI进行了初始化,本语句就必须的被注释掉,否则编译时会报错!Point(int m, int n)/PI = 2.33; /只要10行对PI进行了初始化,本语句就必须的被注释掉,否则编译时会报错!void output()/PI = 2; /error 因为“一个类的所有方法内

6、部都不可以修改final修饰过的成员变量的”System.out.printf("%d %fn", x, PI);public static void main(String args)Point pt = new Point();pt.output();/*在JDK 1.6中的运行结果是:-0 1.900000-*/*接口中定义的属性的值在实现类中不能被更改接口的属性是public static final 类型*/接口中是不可以定义构造函数的interface Itint i = 10; /不能改为 int i;class A implements Itpublic A

7、(int j)/this.i = j; / 接口It中的属性i 是public static final 类型,不可以在实现类中被改变class TestInter_1public static void main(String args)A aa = new A(10);System.out.println("aa.i = " + aa.i);System.out.println("aa.i = " + A.i);class Ainterface It1interface It2 /接口可以多重继承,即一个接口可以有多个父接口,但是一个类只能有一个父类

8、,Java类不允许多继承,接口却允许多继承interface It3 extends It1, It2interface It4int i = 20;/一个类可以在继承一个父类的同时实现一个或多个接口,但extends关键字必须的在implements 之前class T extends A implements It4,It3class TestInter_2public static void main(String args)System.out.println("嘿嘿!");class A public void f()System.out.printf("

9、;AAAAn");class B extends Apublic void f() /重写方法的权限不能低于被重写方法的访问权限System.out.printf("BBBBn");public class TestApublic static void main(String args)B bb = new B();/bb.f();A aa = new A();aa.f();aa = bb;aa.f(); /(*aa).f();/bb = aa; /errorclass A public void f()System.out.printf("AAAAn

10、");class B extends Apublic void f()System.out.printf("BBBBn");public class TestA_2public static void main(String args)A aa = new A();B bb = new B();aa = bb;/bb = aa; /errorbb = (B)aa;bb.f();aa.f();abstract class Aabstract public void f();class B extends Apublic void f()System.out.prin

11、tf("BBBBn");public class TestAbsPoly_1public static void main(String args)/A aa = new A(); /error 18行B bb = new B(); /OKbb.f(); /OKA aa; /23行 OK 可以定义一个抽象类的引用,但是不可以定义一个抽象类的对象,所以18行error, 本行OKaa = bb;aa.f();/有抽象方法的类一定是抽象类abstract class Aabstract public void f(); /没有方法体的方法叫做抽象方法, 抽象方法要求末尾必须得加

12、分号,前面必须得加abstract/抽象类不一定有抽象方法abstract class Bpublic void g()public class TestAbstract_1public static void main(String args)class A final public int i = 10;/常变量public A()i = 10;public void f()/i = 22;class TestFinal_1public static void main(String args)class Afinal public void f() /如果在public前面加final,

13、则编译时就会报错System.out.println("AAAA");class B extends A/public void f()/System.out.println("BBBB");/public class TestFinal_2public static void main(String args)class Apublic void f()System.out.printf("AAAAn");class B extends Apublic void f()System.out.printf("BBBBn&qu

14、ot;);class C extends Bpublic void f()System.out.printf("CCCCn");class D extends Cpublic void f()System.out.printf("DDDDn");public class TestPoly_1public static void g(A aa)aa.g(); /类似于C语言的: (*aa).f();public static void main(String args)A aa = new A();B bb = new B();C cc = new C();D dd = new D();g(aa);g(bb);g(cc);g(dd);class A public void f()System.out.printf("AAAAn");class B extends

温馨提示

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

评论

0/150

提交评论