java语言abstract,java abstract用法
00-1010 1.理解2。功能3。装饰类-抽象类4。装饰法-抽象法5。代码演示6。经典话题7。抽象类8的匿名子类。应用程序模板方法设计模式。
目录
摘要:摘要
1. 理解
抽象可以用来修改类和方法。你不能用abstract来修饰变量、代码块和构造函数。不能用abstract来修饰私有方法、静态方法、final方法、final类。
00-1010抽象类中必须有一个构造函数,方便子类实例化时调用(涉及:实例化子类的全过程)。开发,会提供抽象类的子类,这样子类就可以实例化完成相关操作。抽象类不能被实例化。类是用来继承的,抽象类的子类必须覆盖父类的抽象方法,并提供方法体。如果所有的抽象方法没有被覆盖,它们仍然是抽象类。
00-1010抽象方法只有方法的声明,没有方法的实现。以分号结尾。
公共抽象void talk();包含抽象方法的类必须声明为抽象类。相反,抽象类中不能有抽象方法。
只有当子类覆盖了父类中的所有抽象方法时,它才能被实例化。如果子类没有覆盖父类中的所有抽象方法,那么它也是一个抽象类,需要用abstract来修饰。
00-1010公共类抽象测试{ public static void main(string[]args){//Person类一旦抽象就不能实例化//Person P1=new Person();//P1 . eat();} }抽象类生物{公共抽象虚空气息();}抽象类Person扩展生物{ String nameint agepublic Person(){ } public Person(String name,int age){ this . name=name;this.age=年龄;}//不是抽象方法://public void eat(){///}/abstract方法public abstract void eat();public void walk(){ system . out . println(人走);}}class Student扩展Person { public Student(String name,int age){super(name,age);} public student(){ } public void eat(){ system . out . println(学生吃更有营养的食物);} @ override public void breath(){ system . out . println(学生要呼吸没有雾霾的新鲜空气);}}
2. 作用
公共类Test1 {公共静态void main(String args[]){ A A=new B();a . m1();//m1类B中定义的方法a . m2();//在类A中定义的m2方法}}抽象类A {抽象void M1();public void m2(){ system . out . println(类A中定义的m2方法);} }类扩展了一个{ void m1(){ system . out . println( b类中定义的m1方法);} }
00-1010公共类人测试{ public static void main(string[]args){//匿名对象方法(new Student());//非匿名类非匿名对象Worker Worker=new Worker();方法1(工人);//非匿名类匿名对象method 1(new Worker());//创建了object的匿名子类:p person p=new person(){ @ override public void eat(){ system . out . println( eat );} @ override public void breath(){ system . out . println(好好呼吸);}};方法1(p);//创建匿名子类的匿名对象method 1(new person(){ @ override public void eat(){ system . out . println(吃好吃的));} @ override public void breath(){ system . out . println(好好吸一口新鲜空气);}});}public静态void method 1(Person p){ p . eat();p . breath();} public static void method(Student s){ } } class Worker扩展Person { @ override public void eat(){ } @ override public void breath(){ } }
00-1010抽象类体现了模板模式的设计。抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展和改造,但子类整体上会保留抽象类的行为。
当一个功能的部分实现是确定的,部分实现是不确定的。这时候可以把不确定的部分暴露出来,让子类实现。
换句话说,在软件开发中实现一个算法时,整体步骤是固定的,通用的,这些步骤已经写在父类中了。但是有些部分是易变的,易变的部分可以抽象为不同的子类来实现。这是一个模板模式。
模板设计模式是编程中常用的模式。所有的框架和类库中都有他的影子,比如:
数据库访问的封装;
Junit单元测试;JavaWeb Servlet中的doGet/doPost方法调用:Hibernate中的模板程序;JDBCTemlate,HibernateTemplate等。春天;抽象类模板{ public final void getTime(){ long start=system . current time millis();code();long end=system . current time millis();System.out.println(执行时间为:(end-start));}公共抽象void代码();}class SubTemplate扩展模板{ public void code(){ for(int I=0;我10000;I){ system . out . println(I);}}}就这样。这篇关于Java对关键字abstract用法的深入探索的文章已经介绍到这里了。更多相关Java抽象内容,请搜索之前关于热门IT的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。