《第四章面向对象程序设计精选PPT.ppt》由会员分享,可在线阅读,更多相关《第四章面向对象程序设计精选PPT.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章面向对象程序设计第1页,此课件共70页哦4.1 4.1 面向对象程序设计的基本概念面向对象程序设计的基本概念l对象对象是客观世界中的某个具体事物。(客车)是客观世界中的某个具体事物。(客车)l事事物物的的特特性性就就是是数数据据(载载客客数数量量、燃燃料料容容量量、耗耗油均值油均值)l事物的行为就是事物的行为就是方法方法 (行驶、起动、刹车)行驶、起动、刹车)数据数据 方法方法l 面向对象的程序设计方法就是将客观事物抽象面向对象的程序设计方法就是将客观事物抽象成为成为“类类”,并通过类的,并通过类的“继承继承”实现软件的实现软件的可扩充性和可重用性。可扩充性和可重用性。对象对象第2页,此
2、课件共70页哦类和对象类和对象 l类类是是具具有有共共同同特特性性和和行行为为的的事事物物的的抽抽象象,是是一一种种特特殊殊数数据据类类型型。在在类类中中包包含含了了数数据和与数据有关的操作(方法)。据和与数据有关的操作(方法)。l对象对象是类的实例。是类的实例。类类 汽车汽车 对象对象 客车客车抽象实例化第3页,此课件共70页哦面向对象程序设计的核心技术面向对象程序设计的核心技术封装、继承、多态性封装、继承、多态性l通过封装可以隐藏类的实现细节,也可以避免对类中数据通过封装可以隐藏类的实现细节,也可以避免对类中数据的直接操作。类是封装的基本单元。的直接操作。类是封装的基本单元。l继承是对类的
3、功能的重用和扩充。继承是对类的功能的重用和扩充。l多态性是指方法的名字相同,但实现不同。多态性是指方法的名字相同,但实现不同。Java是一种完全面向对象的程序设计语言。它继是一种完全面向对象的程序设计语言。它继承了承了C+的优点。的优点。Java降低了程序的复杂性,实现了代码降低了程序的复杂性,实现了代码的可重用性,提高了运行效率。的可重用性,提高了运行效率。第4页,此课件共70页哦4.2 4.2 类的创建类的创建类的声明格式:类的声明格式:l 类类首首声声明明定定义义类类的的名名字字、访访问问权权限限以以及及与与其其它它类类的的关系等。关系等。l 类类主主体体定定义义类类的的成成员员,包包括
4、括变变量量(数数据据)和和方方法法(行为)(行为)第5页,此课件共70页哦 类首声明类首声明:class extends implements class:类定义的关键字;类定义的关键字;extends:表示类和另外一些类(超类)的继承关系;表示类和另外一些类(超类)的继承关系;implements:表示类实现了某些接口;表示类实现了某些接口;修修饰饰符符:表表示示类类访访问问权权限限(public、private等等)和和一一些些其其它它特特性性(abstract、final等);等);例如:例如:public class Date1声声明明Date1类类,访访问问权权限限为为public,
5、表表示示类类Date1可可以以被被该该类类所所属属的包之外的类使用。的包之外的类使用。第6页,此课件共70页哦类主体的结构:类主体的结构:/类首,以下为类主体类首,以下为类主体 l成员变量即类的数据,反映了类的属性和状态。成员变量即类的数据,反映了类的属性和状态。l成员方法即类的行为(对数据的操作)成员方法即类的行为(对数据的操作)例例4.2.1:声明一个日期类声明一个日期类Date1public class Date1 int year,month,day;/成员变量成员变量 public void today()/成员方法成员方法 System.out.println(“Date is”+
6、year+”/”+month+”/”+day);第7页,此课件共70页哦例:根据几何中的坐标位置,定义一个Point类class Point private int x,y;public void setPoint(int a,int b)x=a;y=b;public int getX()return x;public int getY()return y;public String toString()return“+x+”,”+y+”;第8页,此课件共70页哦 成员变量的声明格式成员变量的声明格式:static final transient l static:表示是一个类成员变量(静态变
7、量);表示是一个类成员变量(静态变量);l final:表示是一个常量;表示是一个常量;(最终成员变量)最终成员变量)例:final double PI=3.1415926;l transient:表示一个临时变量表示一个临时变量l 修饰符修饰符:表示变量的访问权限(缺省访问、表示变量的访问权限(缺省访问、public、protected和和private)l作作用用域域:整整个个类类。同同一一类类中中的的所所有有方方法法都都可可以以对对其其访访问问。并并可可简简单单地地通通过过名名字字来来引引用用。(在在方方法法体体内内定定义义的的变变量量是是方方法法变变量量,作作用用域只能在方法体内)域只
8、能在方法体内)例:例:class Sampleclass public int I;method()int j;第9页,此课件共70页哦成员方法的声明格式:成员方法的声明格式:()throws 方法体方法体 l修饰符:修饰符:方法的访问权限方法的访问权限(缺省的、缺省的、public、protected和和private)static:类方法(静态方法);类方法(静态方法);abstract:抽象方法(无方法体的方法);抽象方法(无方法体的方法);final:最终方法(不能被子类改变)。最终方法(不能被子类改变)。throws:表示抛出异常表示抛出异常第10页,此课件共70页哦public c
9、lass Date2 int year,month,day;/设置某一天日期的方法设置某一天日期的方法 public void setdate(int y,int m,int d)year=y;month=m;day=d;void today()/打印某一天日期的方法打印某一天日期的方法 System.out.println(The date of today is +year+/“+month+/+day);boolean isleap(int y)/判断某年是否是闰年的方法判断某年是否是闰年的方法 return(y%4=0&y%100!=0)|y%400=0;例例4.2.2:日期类的改进版
10、,增加一些方法,便于对数据的操作日期类的改进版,增加一些方法,便于对数据的操作第11页,此课件共70页哦void tomorrow()/计算并打印某天后面一天的日期的方法计算并打印某天后面一天的日期的方法 int d,m,y;d=day+1;m=month;y=year;if(d28)&month=2)if(!isleap(year)|d29)d=1;m=m+1;else if(d30&(month7&month%2=1)d=1;m=m+1;else if(d31)d=1;m=m+1;if(m=13)y=y+1;m=1;System.out.println(The date of tomorr
11、ow is +y+/+m+/+d);第12页,此课件共70页哦 public static void main(String args)Date2 de=new Date2();de.setdate(2000,2,29);if (de.isleap(de.year)System.out.println(de.year+is a leap year);de.today();de.tomorrow();第13页,此课件共70页哦4.3 4.3 对象的创建和使用对象的创建和使用创建对象的两种方式:创建对象的两种方式:l第一种形式的创建步骤:第一种形式的创建步骤:第一步:第一步:声明对象声明对象 ;第
12、二步:第二步:实例化对象实例化对象 =new(参数参数1,参数,参数2,);例:例:Date1 a;/声明对象声明对象 a=new Date1();/实例化对象实例化对象 第14页,此课件共70页哦 第二种创建对象的形式:第二种创建对象的形式:=new(参数参数1,参数,参数2,);例:例:Date2 de=new Date2();实实例例化化就就是是为为对对象象分分配配存存储储空空间间,并并同同时时对对对对象象进进行行初初始始化化。这这些些工工作作分分别别用用new运运算算符符和和类类的的构构造造方方法法(Date2()来来完成。完成。第15页,此课件共70页哦邮箱:第16页,此课件共70页
13、哦 4.3.2 4.3.2 构造方法和对象的初始化构造方法和对象的初始化 类类的的构构造造方方法法是是一一种种特特殊殊方方法法,作作用用是是在在创创建建对对象象时时Java系统调用构造方法去初始化新建对象的成员变量。系统调用构造方法去初始化新建对象的成员变量。例:例:Date2 de=new Date2(1999,12,31);l如如果果没没有有自自定定义义构构造造方方法法,则则Java调调用用类类的的默默认认构构造造方方法法。Java将将使使用用缺缺省省值值(数数值值为为0,对对象象为为null,布布尔尔值值为为false,字符为,字符为0)来初始化成员变量。来初始化成员变量。例:例:Dat
14、e2 de=new Date2();创建自定义构造方法创建自定义构造方法l类的构造方法的名字应该和这个类的名字一样;类的构造方法的名字应该和这个类的名字一样;l构造方法没有返回值(在构造方法名字前连构造方法没有返回值(在构造方法名字前连void也不要加)也不要加)第17页,此课件共70页哦例例4.3.1:在类:在类Date2中增加自定义的构造方法中增加自定义的构造方法public class Date2 int year,month,day;Date2(int y,int m,int d)/创建构造函数创建构造函数 year=y;month=m;day=d;Date2()/缺省构造函数缺省构造
15、函数 /以下同例4.2.2/以下在main 方法中,调用构造函数对对象进行初始化第18页,此课件共70页哦public static void main(String args)Date2 de1,de2;de1=new Date2(1999,3,31);/调用构造函数进行初始化调用构造函数进行初始化 de2=new Date2();/调用缺省构造函数调用缺省构造函数 System.out.println(The first object:);if(de1.isleap(de1.year)System.out.println(de1.year+is a leap year);de1.today
16、();de1.tomorrow();System.out.println(The second object:);de2.setdate(2000,2,29);if(de2.isleap(de2.year)System.out.println(de2.year+”is a leap year”);de2.today();de2.tomorrow();第19页,此课件共70页哦 无参数的构造方法无参数的构造方法 如如果果有有自自己己创创建建的的构构造造方方法法,而而创创建建某某些些对对象象时时又又不不想想进进行行初初始始化化,一一定定要要在在类类中中创创建建无无参参数数的的构构造方法,因为此时已
17、没有缺省的构造方法了。造方法,因为此时已没有缺省的构造方法了。构造方法是可以重载的构造方法是可以重载的 同名但参数不一样的构造方法同名但参数不一样的构造方法第20页,此课件共70页哦4.3.3 对象的使用对象的使用l成员变量的引用格式:成员变量的引用格式:.例:if(de1.isleap(de1.year)System.out.println(de1.year+is a leap year);l成员方法的调用格式:成员方法的调用格式:.例:if(de1.isleap(de1.year)System.out.println(de1.year+is a leap year);第21页,此课件共70
18、页哦4.3.4 对象的消毁对象的消毁l对象的生命周期对象的生命周期:对象的创建、使用和销毁这一过程。:对象的创建、使用和销毁这一过程。l对对象象的的销销毁毁:当当对对象象使使用用完完毕毕后后,释释放放对对象象所所占占有有的资源(如分配给它的内存)。的资源(如分配给它的内存)。l 对象销毁的方法对象销毁的方法 Java能能自自动动判判断断对对象象是是否否在在使使用用,并并自自动动销销毁毁不不再再使使用用的的对象,收回对象所占的资源。对象,收回对象所占的资源。采用析构方法(采用析构方法(finalize)在程序中随时销毁一个对象。)在程序中随时销毁一个对象。第22页,此课件共70页哦4.4 4.4
19、 类的封装类的封装 目的:目的:l限限制制在在类类的的外外部部对对类类内内部部成成员员进进行行访访问问。只只通通过过公公共共接接口口来访问类的成员数据。来访问类的成员数据。l屏屏蔽蔽细细节节。这这是是程程序序设设计计的的基基本本思思想想方方法法。便便于于程程序功能的扩展和程序的维护。序功能的扩展和程序的维护。访问权限的设置访问权限的设置权限权限同一类同一类同一包同一包不同包的子类不同包的子类所有类所有类public允许允许允许允许允许允许允许允许protected允许允许允许允许允许允许不允许不允许默认默认允许允许允许允许不允许不允许不允许不允许private允许允许不允许不允许不允许不允许不
20、允许不允许第23页,此课件共70页哦l类的访问权限的设置类的访问权限的设置类的权限有两种:默认和类的权限有两种:默认和public。如如果果在在一一个个源源程程序序文文件件中中,声声明明了了若若干干个个类类的的话话,只只能能有有一一个个类类的的权权限限关关键键字字是是public。这这个个类类的的名名字字应应该该和和程程序序文文件同名,件同名,main方法也应该在这个类中。方法也应该在这个类中。例:例:public class Date public static void main(String args)class time 第24页,此课件共70页哦类的成员的访问权限设置类的成员的访问权
21、限设置用用权权限限关关键键字字设设置置类类的的成成员员的的权权限限,以以此此决决定定是是否允许其类外部的代码访问这些成员。否允许其类外部的代码访问这些成员。例:例:private int year,month,day;public today();lpublic被修饰为public的类是公共类,它可供所在包的其他类使用,也可供其他包中的类使用,在程序中可以用import语句引入其他包中的public类。被public定义的类中成员变量或方法可以供其他类访问。例:使用import引入其他包中的public类:第25页,此课件共70页哦import ax.Account;import ax.Acc
22、ount;public class Useraccountpublic class Useraccount public static void main(String args)public static void main(String args)Account myaccount=new Account();Account myaccount=new Account();myaccount.name=myaccount.name=张三张三;myaccount.address=myaccount.address=上海市延安西路上海市延安西路1 1号号;myaccount.balance=1
23、23.40;myaccount.balance=123.40;myaccount.display();myaccount.display();package ax;public class Account public String name;public String address;public double balance;public void display()System.out.println(name:+name);System.out.println(Address:+address);System.out.println(balance:+balance);第26页,此课件
24、共70页哦 protected该类的成员可以被同一包中的类或其它包中的该类的子类访问。默认 默认的权限,该类的成员能被同一包中的类访问。private设置private访问权限,则该类的成员只能被同一类中的成员访问,而不让其他类进行访问。例4.4.1第27页,此课件共70页哦public class Date3int year,month,day;Date3(int y,int m,int d)year=y;month=m;day=d;Date3()public void setdate(int y,int m,int d)year=y;month=m;day=d;void today()Sy
25、stem.out.println(The date of today is+year+/+month+/+day);boolean isleap(int y)return(y%4=0&y%100!=0)|y%400=0;第28页,此课件共70页哦 void tomorrow()int d,m,y;d=day+1;m=month;y=year;if(d28)&month=2)if(!isleap(year)|d29)d=1;m=m+1;else if(d30&(month7&month%2=1)d=1;m=m+1;else if(d31)d=1;m=m+1;if(m=13)y=y+1;m=1;S
26、ystem.out.println(The date of tomorrow is+y+/+m+/+d);第29页,此课件共70页哦 public static void main(String args)Date3 de1,de2;de1=new Date3(1999,3,31);de2=new Date3();System.out.println(The first object:);if(de1.isleap(de1.year)System.out.println(de1.year+is a leap year);de1.today();de1.tomorrow();System.out
27、.println(The second object:);de2.setdate(2000,2,29);if(de2.isleap(de2.year)System.out.println(de2.year+is a leap year);de2.today();de2.tomorrow();第30页,此课件共70页哦staticlstatic是一个修饰符,表示与类有关系,是一个修饰符,表示与类有关系,而不是与类的某一个对象有关系。而不是与类的某一个对象有关系。类变量(静态成员变量)类变量(静态成员变量)类方法(静态方法)类方法(静态方法)第31页,此课件共70页哦类变量类变量l类类变变量量可可
28、以以被被所所有有的的对对象象共共享享。在在一一个个对对象象也也没没有有被被创创建建时时,类类变变量量就就存存在在了了。当当程程序序运运行行结结束束,类类变变量量才才被被撤撤消。消。l 引用类变量格式:引用类变量格式:.l 与与实实例例变变量量的的区区别别:类类变变量量不不管管类类构构造造了了多多少少个个对对象,它只有一份。象,它只有一份。例例4.4.2第32页,此课件共70页哦class Melonfloat weight;static float total_weight=0;static int total_number=0;public Melon(float w)weight=w;to
29、tal_weight=total_weight+weight;total_number=total_number+1;public void reduce()total_weight=total_weight-weight;total_number=total_number-1;第33页,此课件共70页哦public class Melon_expublic static void main(String args)Melon m1,m2;m1=new Melon(10);m2=new Melon(12);System.out.println(Total weight:+m1.total_we
30、ight);System.out.println(Total number:+Melon.total_number);m1.reduce();System.out.println(Total weight:+Melon.total_weight);System.out.println(Total number:+Melon.total_number);m2.reduce();System.out.println(Total weight:+Melon.total_weight);System.out.println(Total number:+Melon.total_number);第34页,
31、此课件共70页哦第35页,此课件共70页哦public class UseString public static void main(String args)char letter;String str1,str2;str1=new String(“objects”);if(str1.length()2)str2=str1.substring(0,2);System.out.println(str1+“begins with”+str2);public class String private char data;public static String valueOf(int i)publ
32、ic String(char chars)public int length()public char charAt(int num)public String substring(int ind1,int ind2)与实例方法的区别:不创建String的对象,则不能调用String类的length()或 substring()方法。类方法(静态方法)类方法(静态方法)第36页,此课件共70页哦int a=Integer.parseInt(456);System.out.println(a:+a);你曾经用过的类方法:public class Integer public static int
33、 parseInt(String s)throws NumberFormatException./and many more Integer methods /end Integer class definition第37页,此课件共70页哦类类方方法法不不属属于于类类的的某某个个对对象象,可可以以被被由由该该类类创创建建的的所所有有对对象象使使用用,也也可可以以被被其其它它类类引引用用。在在任任何何地地方方都都可以使用类方法而不必对类进行实例化操作。可以使用类方法而不必对类进行实例化操作。类方法只能引用类变量。类方法只能引用类变量。引用类方法格式:引用类方法格式:.例例4.4.3第38页,此
34、课件共70页哦数学函数类方法数学函数类方法Java类库的类库的Math类库中提供了常用数学函数的类方法:类库中提供了常用数学函数的类方法:public class Math public static int max(int a,int b).public static int abs(int a).public static double random()./and many more static Math methods/end Math class definitionMath.max(x,y)Math.abs(a);Math.random();Math.pow(double x,do
35、uble y)Math.sqrt(double x)Math.sin(double a);例例4.4.4第39页,此课件共70页哦例:用类变量跟踪创建了多少个对象。public class ProductNumber public static int nextID;/class variable 1.private int productID;/instance variable 2.public ProductNumber()productID=nextID;/3.nextID+;/4.public int getproductID()return productID;public sta
36、tic void setInitialID(int num)nextID=num;第40页,此课件共70页哦public class ProductApp public static void main(String args)ProductNumber pNum1,pNum2,pNum3;ProductNumber.setInitialID(1000);/1.pNum1=new ProductNumber();/2.pNum2=new ProductNumber();pNum3=new ProductNumber();System.out.println(pNum1.getproductID
37、():+pNum1.getproductID();/3.System.out.println(pNum2.getproductID():+pNum2.getproductID();System.out.println(pNum3.getproductID():+pNum3.getproductID();System.out.println(ProductNumber.nextID:+ProductNumber.nextID);/4 System.out.println(pNum1.nextID:+pNum1.nextID);/5 System.out.println(pNum2.nextID:
38、+pNum2.nextID);System.out.println(pNum3.nextID:+pNum3.nextID);第41页,此课件共70页哦下列图示表示当application执行到标为/3的行时,内存的情况:pNum1.getproductID():1000pNum2.getproductID():1001pNum3.getproductID():1002ProductNumber.nextID:1003pNum1.nextID:1003pNum2.nextID:1003pNum3.nextID:1003Application的输出:第42页,此课件共70页哦类的继承类的继承 以原
39、有的类为基础创建新的类,从而达到代码复用的目的以原有的类为基础创建新的类,从而达到代码复用的目的l被被继继承承的的类类称称为为超超类类(父父类类)。从从超超类类派派生生出出来来(继继承承超超类类)的的新类称新类称子类子类。l只只支支持持单单重重继继承承,不不支支持持多多重重继继承承,所所以以一一个个类类只只能能有有一一个个超超类。类。l继承的层次结构。一个子类成为另一个子类的超类。继承的层次结构。一个子类成为另一个子类的超类。l如如果果类类Sub是是类类Super的的子子类类,则则类类Sub继继承承了了超超类类Super的的变变量量和和方法。方法。l子子类类Sub中中,包包括括两两部部分分的的
40、内内容容:从从超超类类Super中中继继承承下下来来的的变变量量和方法,自己新增加的变量和方法。和方法,自己新增加的变量和方法。汽车客车卡车轿车小客车大客车第43页,此课件共70页哦子类的创建子类的创建l声明子类声明子类 class extends 子类体子类体 如:如:class Sub extends Super 子类体子类体 l子子类类的的每每个个对对象象也也是是超超类类的的对对象象。超超类类的的对对象象不不一一定定是是子子类的对象。类的对象。第44页,此课件共70页哦子类继承超类的成员变量和方法子类继承超类的成员变量和方法继承原则:继承原则:l 子类只继承超类中非子类只继承超类中非pr
41、ivate的成员变量和方法。的成员变量和方法。(例见下页)例见下页)例:例:Shapes.javawidthheightshowDim()stylearea()showStyle()TriangleTwoDShape第45页,此课件共70页哦class TwoDShape private double width;private double height;void showDim()System.out.println(Width and height are+width+and+height);class Triangle extends TwoDShape String style;do
42、uble area()return width*height/2;/Error!Cant access void showStyle()System.out.println(Triangle is +style);第46页,此课件共70页哦变量的变量的变量的变量的隐藏原则:隐藏原则:隐藏原则:隐藏原则:子类的成员变量和超类的成员变量同子类的成员变量和超类的成员变量同子类的成员变量和超类的成员变量同子类的成员变量和超类的成员变量同名时,超类的成员变量被隐藏(不能继承)。名时,超类的成员变量被隐藏(不能继承)。名时,超类的成员变量被隐藏(不能继承)。名时,超类的成员变量被隐藏(不能继承)。l例4.
43、5.1l方法的方法的覆盖原则覆盖原则子类的成员方法和超类的成员方法同名时,超类的成员方子类的成员方法和超类的成员方法同名时,超类的成员方法被子类的成员方法覆盖(不能继承)。法被子类的成员方法覆盖(不能继承)。第47页,此课件共70页哦class Person protected String name;protected int age;protected String address;public void setPerson(String na,int ag,String ad)name=na;age=ag;address=ad;class Student extends Person S
44、tring address;String department;public void setStudent(String na,int ag,String ad,String ad1,String de)setPerson(na,ag,ad);address=ad1;department=de;第48页,此课件共70页哦public class Student_expublic static void main(String args)Person pe=new Person();Student st=new Student();pe.setPerson(Tom,20,121 North s
45、treet);st.setStudent(Jhon,19,234 South street,336 West Street,Computer);System.out.println(The object of Person:+pe.name+,+pe.age+,+pe.address);System.out.println(The object of Student:+st.name+,+st.age+,+st.address+,+st.department);第49页,此课件共70页哦“super”关键字lsuper表示对某个类的超类的引用。表示对某个类的超类的引用。l如子类和超类有同名的成
46、员变量或方法,则:如子类和超类有同名的成员变量或方法,则:super.super.表表示示引引用用超超类类的的成成员员(如如无无super则则表表示示子子类类中中的的同名成员)同名成员)第50页,此课件共70页哦构造方法的继承l子类可以无条件地继承超类无参数的构造方法。l如果子类没有构造方法,则它继承超类无参数的构造方法;如果子类有构造方法,那么在创建子类的对象时,则将先执行继承下来的超类的构造方法,然后再执行自己的构造方法。l对于超类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造方法中的第一条语句。l用super调用超类的构造方法:sup
47、er(参数列表)第51页,此课件共70页哦“null”关键字l基本数据类型的变量有缺省值l类的实例即对象被声明时,它先被初始化为一个特殊的值“null”。这表示它是一个空对象。数据类型缺省值int0Double0.0booleanfalse第52页,此课件共70页哦“This”关键字l在类定义中的方法中需要引用正在使用该方法的对象时,可以用“this”表示。Line line1=new Line();line1.setStartPt(10,20);l例4.5.3public void setStartPt(int x,int y)this.startX=x;/the this can be o
48、mitted here this.startY=y;第53页,此课件共70页哦终止继承l出于安全性方面的考虑,要避免子类继承超类的某个方法,可以使用“final”关键字来使继承终止。这样使此方法不会在子类中被覆盖(即子类中不能有和此方法同名的方法)l不能被继承的类称为最终类。如:final class Last;l用final说明的成员方法为最终方法。如:public final void printsuper()第54页,此课件共70页哦抽象类和抽象方法抽象类和抽象方法l抽象类抽象类是专门设计来让子类继承的类。抽象类一般包括一是专门设计来让子类继承的类。抽象类一般包括一个或多个抽象方法。个或
49、多个抽象方法。l抽象方法抽象方法是必须被子类覆盖的方法。是必须被子类覆盖的方法。l声明抽象类和方法格式:声明抽象类和方法格式:abstract class 成员变量;成员变量;方法()方法()方法体方法体 ;/定义一般方法定义一般方法 abstract 方法方法();/定义抽象方法定义抽象方法l抽抽象象方方法法不不用用实实现现代代码码,而而是是在在子子类类中中实实现现所所有有的的抽抽象象方法。方法。l对对于于成成员员方方法法,不不能能同同时时用用static和和abstract说说明明。对对于于类,不能同时用类,不能同时用final和和abstract说明。说明。例例4.5.4第55页,此课件
50、共70页哦类的多态性l多态是指同一个名字的若干个方法,有不同的实现(即方多态是指同一个名字的若干个方法,有不同的实现(即方法体中的代码不一样)。法体中的代码不一样)。l通过方法的通过方法的重载重载(overloading)和和覆盖覆盖(override)来实现多态来实现多态性。性。l方法的重载方法的重载 一个类中,有若干个方法名字相同,但方法的参数不同,称一个类中,有若干个方法名字相同,但方法的参数不同,称为方法的重载。在调用时,为方法的重载。在调用时,Java执行方法名、参数个数和参数类执行方法名、参数个数和参数类型完全相同的方法体。型完全相同的方法体。System.out.println(