第8章_繼承、多態(tài)、重載及接口_第1頁(yè)
第8章_繼承、多態(tài)、重載及接口_第2頁(yè)
第8章_繼承、多態(tài)、重載及接口_第3頁(yè)
第8章_繼承、多態(tài)、重載及接口_第4頁(yè)
第8章_繼承、多態(tài)、重載及接口_第5頁(yè)
已閱讀5頁(yè),還剩118頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、23Java的繼承的繼承4各種電話(huà)卡類(lèi)及其間的繼承關(guān)系各種電話(huà)卡類(lèi)及其間的繼承關(guān)系Java的繼承的繼承5Java的繼承的繼承67Java的繼承的繼承class SubClass extends SuperClass 9Java的繼承的繼承class Student extends Person /class Person /Person類(lèi)是類(lèi)是java.lang.Object類(lèi)的子類(lèi)類(lèi)的子類(lèi) private String name; /name表示姓名表示姓名 private int age; /age表示年齡表示年齡 public Person() /定義定義Person類(lèi)的無(wú)參構(gòu)造方法類(lèi)的

2、無(wú)參構(gòu)造方法 System.out.println(調(diào)用了個(gè)人類(lèi)的構(gòu)造方法調(diào)用了個(gè)人類(lèi)的構(gòu)造方法Person(); public void setNameAge(String name, int age) =name; this.age=age; public void show() System.out.println(姓名:姓名:+name+ 年齡:年齡:+age); class Student extends Person /繼承自繼承自Person類(lèi)類(lèi) private String department; public Student() /定義定義Student類(lèi)的

3、構(gòu)造方法類(lèi)的構(gòu)造方法 System.out.println(調(diào)用了學(xué)生類(lèi)的構(gòu)造方法調(diào)用了學(xué)生類(lèi)的構(gòu)造方法Student(); public void setDepartment(String dep) department=dep; System.out.println(我是我是+department +的學(xué)生的學(xué)生); public class App8_1 /主類(lèi)主類(lèi) public static void main(String args) Student stu=new Student(); stu.setNameAge(張小三張小三,21); stu.show(); stu.setDe

4、partment(計(jì)算機(jī)系計(jì)算機(jī)系); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:調(diào)用了個(gè)人類(lèi)的構(gòu)造方法調(diào)用了個(gè)人類(lèi)的構(gòu)造方法Person()調(diào)用了學(xué)生類(lèi)的構(gòu)造方法調(diào)用了學(xué)生類(lèi)的構(gòu)造方法Student()姓名:張小三姓名:張小三 年齡:年齡:21我是計(jì)算機(jī)系的學(xué)生我是計(jì)算機(jī)系的學(xué)生在在Java語(yǔ)言的繼承中,語(yǔ)言的繼承中,執(zhí)行子類(lèi)的構(gòu)造方法之前,會(huì)先執(zhí)行子類(lèi)的構(gòu)造方法之前,會(huì)先調(diào)用父類(lèi)中調(diào)用父類(lèi)中沒(méi)有參數(shù)沒(méi)有參數(shù)的構(gòu)造方法,的構(gòu)造方法,目的是幫助繼承自父目的是幫助繼承自父類(lèi)的成員做初始化操作。類(lèi)的成員做初始化操作。class Person /定義定義Person類(lèi)類(lèi) private String name; priv

5、ate int age; public Person() /定義定義Person類(lèi)的無(wú)參構(gòu)造方法類(lèi)的無(wú)參構(gòu)造方法 System.out.println(調(diào)用了調(diào)用了Person類(lèi)的無(wú)參構(gòu)造方法類(lèi)的無(wú)參構(gòu)造方法); public Person(String name, int age) /定義定義Person類(lèi)的有參構(gòu)造方法類(lèi)的有參構(gòu)造方法 System.out.println(調(diào)用了調(diào)用了Person類(lèi)的有參構(gòu)造方法類(lèi)的有參構(gòu)造方法); =name; this.age=age; public void show() System.out.println(姓名:姓名:+name

6、+ 年齡:年齡:+age); class Student extends Person private String department; public Student() / 定義定義Student類(lèi)無(wú)參構(gòu)造方法類(lèi)無(wú)參構(gòu)造方法 System.out.println(調(diào)用了學(xué)生類(lèi)的無(wú)參構(gòu)造方法調(diào)用了學(xué)生類(lèi)的無(wú)參構(gòu)造方法Student(); public Student (String name,int age,String dep) /定義定義Student類(lèi)的有參構(gòu)造方法類(lèi)的有參構(gòu)造方法 super(name,age); /調(diào)用父類(lèi)的有參構(gòu)造方法調(diào)用父類(lèi)的有參構(gòu)造方法 department

7、=dep; System.out.println(我是我是+department +的學(xué)生的學(xué)生); System.out.println(調(diào)用了學(xué)生類(lèi)的有參構(gòu)造方法調(diào)用了學(xué)生類(lèi)的有參構(gòu)造方法Student(String name,int age,String dep) ); public class App8_2 /主類(lèi)主類(lèi) public static void main(String args) Student stu1=new Student(); /創(chuàng)建對(duì)象,并調(diào)用無(wú)參構(gòu)造方法創(chuàng)建對(duì)象,并調(diào)用無(wú)參構(gòu)造方法 Student stu2=new Student(李小四李小四,23, 信息系信

8、息系); /創(chuàng)建對(duì)象,并調(diào)用有參構(gòu)造方法創(chuàng)建對(duì)象,并調(diào)用有參構(gòu)造方法 stu1.show(); stu2.show(); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:調(diào)用了調(diào)用了Person類(lèi)的無(wú)參構(gòu)造方法類(lèi)的無(wú)參構(gòu)造方法調(diào)用了學(xué)生類(lèi)的無(wú)參構(gòu)造方法調(diào)用了學(xué)生類(lèi)的無(wú)參構(gòu)造方法Student()調(diào)用了調(diào)用了Person類(lèi)的有參構(gòu)造方法類(lèi)的有參構(gòu)造方法我是信息系的學(xué)生我是信息系的學(xué)生調(diào)用了學(xué)生類(lèi)的有參構(gòu)造方法調(diào)用了學(xué)生類(lèi)的有參構(gòu)造方法姓名:姓名:null 年齡:年齡:0姓名:李小四姓名:李小四 年齡:年齡:2314class Person /定義定義Person類(lèi)類(lèi) protected String name; prote

9、cted int age; public Person() /定義定義Person類(lèi)的類(lèi)的“不做事不做事”的無(wú)參構(gòu)造方法的無(wú)參構(gòu)造方法 public Person(String name, int age) /定義定義Person類(lèi)的有參構(gòu)造方法類(lèi)的有參構(gòu)造方法 =name; this.age=age; protected void show() System.out.println(姓名:姓名:+name+ 年齡:年齡:+age); class Student extends Person /定義子類(lèi)定義子類(lèi)Student,其父類(lèi)為,其父類(lèi)為Person private S

10、tring department; int age=20; /新添加了一個(gè)與父類(lèi)的成員變量新添加了一個(gè)與父類(lèi)的成員變量age同名的成員變量同名的成員變量 public Student (String xm,String dep) /定義定義Student類(lèi)的有參構(gòu)造方法類(lèi)的有參構(gòu)造方法 name=xm; /在子類(lèi)里直接訪(fǎng)問(wèn)父類(lèi)的在子類(lèi)里直接訪(fǎng)問(wèn)父類(lèi)的protected成員成員name department=dep; super.age=25; /利用利用super關(guān)鍵字將父類(lèi)的成員變量關(guān)鍵字將父類(lèi)的成員變量age賦值為賦值為25 System.out.println(子類(lèi)子類(lèi)Student中的

11、成員變量中的成員變量age=“ +age); super.show(); /去掉去掉super而只寫(xiě)而只寫(xiě)show()亦可亦可 System.out.println(系別:系別:+ department ); public class App8_3 /主類(lèi)主類(lèi) public static void main(String args) Student stu=new Student(李小四李小四,信息系信息系); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:子類(lèi)子類(lèi)Student中的成員變量中的成員變量age=20姓名:李小四姓名:李小四 年齡:年齡:25系別:信息系系別:信息系this與與super使用小結(jié)使用小結(jié)1

12、8不能覆蓋父類(lèi)中聲明的不能覆蓋父類(lèi)中聲明的final或或static的方法的方法20Java的覆蓋的覆蓋21Java的覆蓋的覆蓋class Person /定義定義Person類(lèi)類(lèi) protected String name; protected int age; public Person(String name, int age) /定義定義Person類(lèi)的構(gòu)造方法類(lèi)的構(gòu)造方法 =name; this.age=age; protected void show() System.out.println(姓名:姓名:+name+ 年齡:年齡:+age); class Stud

13、ent extends Person /定義子類(lèi)定義子類(lèi)Student,其父類(lèi)為,其父類(lèi)為Person private String department; public Student (String name,int age,String dep) /定義定義Student類(lèi)的構(gòu)造方法類(lèi)的構(gòu)造方法 super(name,age); department=dep; protected void show() /覆蓋父類(lèi)覆蓋父類(lèi)Person中的同名方法中的同名方法 System.out.println(系別:系別:+ department); public class App8_4 publi

14、c static void main(String args) Student stu=new Student(王永濤王永濤,24, 電子電子); stu.show(); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:系別:電子系別:電子23Java的覆蓋的覆蓋class Person /定義定義Person類(lèi)類(lèi) protected String name; protected int age; public Person(String name, int age) =name; this.age=age; protected void show() System.out.println(姓名:姓名:

15、+name+ 年齡:年齡:+age); class Student extends Person /定義子類(lèi)定義子類(lèi)Student,其父類(lèi)為,其父類(lèi)為Person private String department; public Student (String name,int age,String dep) /定義定義Student類(lèi)的構(gòu)造方法類(lèi)的構(gòu)造方法 super(name,age); department=dep; protected void show() System.out.println(系別:系別:+ department); public void subShow() S

16、ystem.out.println(我在子類(lèi)中我在子類(lèi)中); public class App8_5 /主類(lèi)主類(lèi) public static void main(String args) Person per=new Student(王永濤王永濤,24, 電子電子); /聲明父類(lèi)變量聲明父類(lèi)變量per指向子類(lèi)對(duì)象指向子類(lèi)對(duì)象 per.show(); /利用父類(lèi)對(duì)象利用父類(lèi)對(duì)象per調(diào)用調(diào)用show()方法方法 /per.subShow(); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:系別:電子系別:電子說(shuō)明:說(shuō)明:以父類(lèi)變量以父類(lèi)變量per指向子類(lèi)的實(shí)指向子類(lèi)的實(shí)體對(duì)象,并以體對(duì)象,并以per來(lái)調(diào)用來(lái)調(diào)用show(

17、)方()方法,此時(shí)覆蓋仍然會(huì)發(fā)生。即:通過(guò)法,此時(shí)覆蓋仍然會(huì)發(fā)生。即:通過(guò)父類(lèi)對(duì)象依然可以訪(fǎng)問(wèn)到子類(lèi)成員。父類(lèi)對(duì)象依然可以訪(fǎng)問(wèn)到子類(lèi)成員。2426Java的覆蓋的覆蓋class AAA static final double pi=3.14; /聲明靜態(tài)常量聲明靜態(tài)常量 public final void show() /聲明最終方法聲明最終方法 static final x=5; System.out.println(“x=+x); class BBB extends AAA private int num=100; public void show() /錯(cuò)誤,不可覆蓋父類(lèi)的方法錯(cuò)誤,不可

18、覆蓋父類(lèi)的方法 System.out.println(num=+num); show方法為方法為final,不可被覆蓋;,不可被覆蓋;pi為為final,子類(lèi)中也不可以被修改,子類(lèi)中也不可以被修改final成員變量成員變量和定義在方法中的和定義在方法中的final局部變量局部變量都是只讀量,一旦給都是只讀量,一旦給定,就不能被修改。定,就不能被修改。2728Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)29Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)30Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)31public class TestEqualsString public static void main(String args) Strin

19、g name1 = new String(LiMing); String name2 = new String(LiMing); System.out.println( name1=name2 ); /兩個(gè)對(duì)象的引用,兩個(gè)對(duì)象的引用,不相等不相等 System.out.println( name1.equals(name2) ); / 內(nèi)容,相等內(nèi)容,相等 String name3 = LiMing; String name4 = LiMing; System.out.println( name3=name4 ); /相同常量的引用,相等相同常量的引用,相等 System.out.printl

20、n( name3.equals(name4) ); / 內(nèi)容,相等內(nèi)容,相等Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)v對(duì)于字符串變量,如果使用對(duì)于字符串變量,如果使用”聲明,則會(huì)存放在字符串池中(聲明,則會(huì)存放在字符串池中(string pool)v對(duì)于字符串變量對(duì)于字符串變量,=比較兩個(gè)變量本身的值,即兩個(gè)對(duì)象在內(nèi)存中的首地址,比較兩個(gè)變量本身的值,即兩個(gè)對(duì)象在內(nèi)存中的首地址,equals()方法比較兩個(gè)字符串所包含的內(nèi)容是否相等。方法比較兩個(gè)字符串所包含的內(nèi)容是否相等。v對(duì)于非字符串變量,兩者都用來(lái)比較其所指對(duì)象在內(nèi)存中的首地址。對(duì)于非字符串變量,兩者都用來(lái)比較其所指對(duì)象在內(nèi)存中的首地址。32Java

21、語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)33Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)void PrintClassName( Object obj ) System.out.println(“ The objects class is “ + obj.getClass( ).getName( ) );34Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)Object creatNewInstanceOf (object obj) return obj.getClass( ).newInstance( );class Person protected String name; public Person(String xm) /定義定義Person

22、類(lèi)的構(gòu)造方法類(lèi)的構(gòu)造方法 name=xm; public class App8_8 /主類(lèi)主類(lèi) public static void main(String args) Person per=new Person(張三張三); Class obj=per.getClass(); /用變量用變量per調(diào)用調(diào)用getClass()方法方法 System.out.println(對(duì)象對(duì)象per所屬的類(lèi)為:所屬的類(lèi)為:+obj); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:對(duì)象對(duì)象per所屬的類(lèi)為:所屬的類(lèi)為:class Personpublic class Person /定義定義Person類(lèi)類(lèi) protected S

23、tring name; protected int age; public Person(String n1,int a1) /構(gòu)造方法構(gòu)造方法 name=n1; age=a1; this.count+; /調(diào)用父類(lèi)的靜態(tài)變量調(diào)用父類(lèi)的靜態(tài)變量 public String toString() return + , +this.age; public void display() System.out.print(本類(lèi)名本類(lèi)名=+this.getClass().getName() +;); System.out.println(父類(lèi)名父類(lèi)名=+this.getClass().

24、getSuperclass().getName() ); System.out.print(Person.count=+this.count+ ); System.out.print(Student.count=+Student.count+ ); Object obj=this; if(obj instanceof Student) /判斷對(duì)象屬于哪個(gè)類(lèi)判斷對(duì)象屬于哪個(gè)類(lèi) System.out.println(obj.toString()+是是Student類(lèi)對(duì)象。類(lèi)對(duì)象。); else if(obj instanceof Person) System.out.println(obj.toS

25、tring()+是是Person類(lèi)對(duì)象。類(lèi)對(duì)象。); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:本類(lèi)名本類(lèi)名=Person; 父類(lèi)名父類(lèi)名=java.lang.ObjectPerson.count=1 Student.count=0 王永濤王永濤,23是是Person類(lèi)對(duì)象。類(lèi)對(duì)象。class Student extends Person /子類(lèi)繼承自父類(lèi)子類(lèi)繼承自父類(lèi)Person,且是主類(lèi)但不是,且是主類(lèi)但不是public類(lèi)類(lèi) protected String dept; protected Student(String n1,int a1,String d1) super(n1,a1); /調(diào)用父類(lèi)的構(gòu)造方法調(diào)

26、用父類(lèi)的構(gòu)造方法 dept=d1; this.count+; /調(diào)用子類(lèi)的靜態(tài)變量調(diào)用子類(lèi)的靜態(tài)變量 public String toString() /覆蓋父類(lèi)的同名方法覆蓋父類(lèi)的同名方法 return super.toString() +,+dept; /調(diào)用父類(lèi)的同名方法調(diào)用父類(lèi)的同名方法 public void display() super.display(); /調(diào)用父類(lèi)的方法調(diào)用父類(lèi)的方法 System.out.print(super.count=+super.count); /引用父類(lèi)的變量引用父類(lèi)的變量 System.out.println( ;this.count=+thi

27、s.count); public static void main(String args) Person per=new Person(王永濤王永濤,23); per.display(); Student stu=new Student(張小三張小三,22,計(jì)算機(jī)系計(jì)算機(jī)系); stu.display(); 運(yùn)行結(jié)果(續(xù)):運(yùn)行結(jié)果(續(xù)):本類(lèi)名本類(lèi)名=Student; 父類(lèi)名父類(lèi)名=PersonPerson.count=2 Student.count=1 張小三張小三,22,計(jì)算機(jī)系是計(jì)算機(jī)系是Student類(lèi)對(duì)象類(lèi)對(duì)象super.count=2; this.count=139 abstr

28、act class 類(lèi)名類(lèi)名 聲明成員變量;聲明成員變量; 返回值的數(shù)據(jù)類(lèi)型返回值的數(shù)據(jù)類(lèi)型 方法名(參數(shù)表)方法名(參數(shù)表) abstract 返回值的數(shù)據(jù)類(lèi)型返回值的數(shù)據(jù)類(lèi)型 方法名(參數(shù)表)方法名(參數(shù)表); 抽象方法,在抽象方法里,不能抽象方法,在抽象方法里,不能定義方法體。定義方法體。只需聲明不需實(shí)現(xiàn)只需聲明不需實(shí)現(xiàn)abstract class Shape protected String name; public Shape(String xm) /抽象類(lèi)中的一般方法,本方法是構(gòu)造方法抽象類(lèi)中的一般方法,本方法是構(gòu)造方法 name=xm; System.out.print(名稱(chēng):名

29、稱(chēng):+name); abstract public double getArea(); abstract public double getLength(); class Circle extends Shape /定義繼承自定義繼承自Shape的圓形子類(lèi)的圓形子類(lèi)Circle private double pi=3.14; private double radius; public Circle(String shapeName,double r) /構(gòu)造方法構(gòu)造方法 super(shapeName); radius=r; public double getArea() /實(shí)現(xiàn)抽象類(lèi)中的實(shí)現(xiàn)

30、抽象類(lèi)中的getArea()方法方法 return pi*radius*radius; public double getLength() /實(shí)現(xiàn)抽象類(lèi)中的實(shí)現(xiàn)抽象類(lèi)中的getLength()方法方法 return 2*pi*radius; class Rectangle extends Shape /定義繼承自定義繼承自Shape的矩形子類(lèi)的矩形子類(lèi)Rectangle private double width; private double height; public Rectangle(String shapeName,double width,double height) /構(gòu)造方法構(gòu)

31、造方法 super(shapeName); this.width=width; this.height=height; public double getArea() /實(shí)現(xiàn)抽象類(lèi)中的實(shí)現(xiàn)抽象類(lèi)中的getArea()方法方法 return width*height; public double getLength() /實(shí)現(xiàn)抽象類(lèi)中的實(shí)現(xiàn)抽象類(lèi)中的getLength()方法方法 return 2*(width+height); public class App8_10 /定義主類(lèi)定義主類(lèi) public static void main(String args) Shape rect =new

32、Rectangle(長(zhǎng)方形長(zhǎng)方形,6.5,10.3); /聲明父類(lèi)對(duì)象,指向子類(lèi)對(duì)象聲明父類(lèi)對(duì)象,指向子類(lèi)對(duì)象 System.out.print(;面積;面積=+rect.getArea() ); System.out.println(;周長(zhǎng);周長(zhǎng)=+rect.getLength() ); Shape circle=new Circle(圓圓,10.2); /聲明父類(lèi)對(duì)象聲明父類(lèi)對(duì)象circle,指向子類(lèi)對(duì)象,指向子類(lèi)對(duì)象 System.out.print(;面積;面積=+circle.getArea() ); System.out.println(;周長(zhǎng);周長(zhǎng)=+circle.getLeng

33、th() ); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:名稱(chēng):長(zhǎng)方形名稱(chēng):長(zhǎng)方形; 面積面積=66.95; 周長(zhǎng)周長(zhǎng)33.6名稱(chēng):圓名稱(chēng):圓;面積面積=326.68559999999997;周長(zhǎng)周長(zhǎng)=64.004445接口接口46接口接口47接口接口48接口接口49接口接口public interface 接口名接口名 extends 父接口名列表父接口名列表 / 接口體接口體 / 常量域聲明,藍(lán)色修飾符即使省略,仍然默認(rèn)為此常量域聲明,藍(lán)色修飾符即使省略,仍然默認(rèn)為此 public static final 域類(lèi)型域類(lèi)型 域名域名 = 常量值;常量值; / 抽象方法聲明,藍(lán)色修飾符即使省略,仍然默認(rèn)為此抽象方法

34、聲明,藍(lán)色修飾符即使省略,仍然默認(rèn)為此 public abstract 返回值返回值 方法名方法名( 參數(shù)列表參數(shù)列表 ) throw 異常列表異常列表; 接口的訪(fǎng)問(wèn)控制符接口的訪(fǎng)問(wèn)控制符:只有只有public用用public修飾的接口是公共接口,可以被所有的類(lèi)和接口使用修飾的接口是公共接口,可以被所有的類(lèi)和接口使用;沒(méi)有沒(méi)有public修飾符的接口則只能被同一個(gè)包中的其他類(lèi)和接口利用修飾符的接口則只能被同一個(gè)包中的其他類(lèi)和接口利用50接口接口51接口接口 class 類(lèi)名稱(chēng)類(lèi)名稱(chēng) implements 接口名表接口名表 vimplements關(guān)鍵字聲明該類(lèi)將要實(shí)現(xiàn)哪些接口關(guān)鍵字聲明該類(lèi)將要實(shí)

35、現(xiàn)哪些接口v接口的抽象方法接口的抽象方法的訪(fǎng)問(wèn)限制符都已指定為的訪(fǎng)問(wèn)限制符都已指定為public,所以類(lèi)在,所以類(lèi)在實(shí)現(xiàn)方法時(shí),實(shí)現(xiàn)方法時(shí),必須顯式地使用必須顯式地使用public修飾符修飾符,否則將被系統(tǒng)警,否則將被系統(tǒng)警告為縮小了接口中定義的方法的訪(fǎng)問(wèn)控制范圍告為縮小了接口中定義的方法的訪(fǎng)問(wèn)控制范圍52接口接口interface IShape /定義接口定義接口final double pi=3.14; abstract double getArea(); /聲明抽象方法聲明抽象方法 abstract double getLength(); /聲明抽象方法聲明抽象方法class Circl

36、e implements IShape /以以IShape接口來(lái)實(shí)現(xiàn)接口來(lái)實(shí)現(xiàn)Circle類(lèi)類(lèi)double radius; public Circle(double r) radius=r; public double getArea() /實(shí)現(xiàn)接口中的實(shí)現(xiàn)接口中的getArea()方法方法 return pi*radius*radius; public double getLength() /實(shí)現(xiàn)接口中的實(shí)現(xiàn)接口中的getLength()方法方法 return 2*pi*radius; class Rectangle implements IShape private double widt

37、h; private double height; public Rectangle(double width,double height) this.width=width; this.height=height; public double getArea() return width*height; public double getLength() return 2*(width+height); public class App8_11 public static void main(String args) /聲明父接口變量聲明父接口變量circle,指向子類(lèi)對(duì)象,指向子類(lèi)對(duì)象 I

38、Shape circle=new Circle(5.0); System.out.print(圓面積圓面積=+circle.getArea(); System.out.println(;周長(zhǎng);周長(zhǎng)=+circle.getLength(); Rectangle rect =new Rectangle(6.5,10.8); /聲明聲明Rectangle類(lèi)的變量類(lèi)的變量rect System.out.print(矩形面積矩形面積=+rect.getArea(); System.out.println(;周長(zhǎng);周長(zhǎng)=+rect.getLength(); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:圓面積圓面積=78.5;周長(zhǎng)

39、;周長(zhǎng)=31.400000000002矩形面積矩形面積=70.2; 周長(zhǎng)周長(zhǎng)=34.6接口接口54接口接口public class Cylinder implements Face3 /定義定義Cylinder類(lèi),并實(shí)現(xiàn)類(lèi),并實(shí)現(xiàn)Face3接口接口 private double radius; private int height; protected String color; public Cylinder(double r, int h) radius=r; height=h; public double area() /實(shí)現(xiàn)實(shí)現(xiàn)Face1接口中的方法接口中的方法 return pi*r

40、adius*radius; public void setColor(String c) /實(shí)現(xiàn)實(shí)現(xiàn)Face2接口中的方法接口中的方法 color=c; System.out.println(顏色:顏色:+color); public void volume() /實(shí)現(xiàn)實(shí)現(xiàn)Face3接口中的方法接口中的方法 System.out.println(圓柱體體積圓柱體體積=+ area()*height); public static void main(String args) Cylinder volu=new Cylinder(3.0,2); volu.setColor(紅色紅色); volu

41、.volume(); interface Face1 /定義接口定義接口Face1 double pi=3.14; abstract double area();interface Face2 /定義接口定義接口Face2 abstract void setColor(String c);interface Face3 extends Face1,Face2 /接口的多重繼承接口的多重繼承 abstract void volume();接口接口接口接口public class Cylinder implements Face1,Face2 /多重繼承多重繼承 private double ra

42、dius; private int height; public Cylinder(double r, int h) radius=r; height=h; public double area() return pi*radius*radius; public void volume() System.out.println(圓柱體體積圓柱體體積=+area()*height); public static void main(String args) Cylinder volu=new Cylinder(5.0,2); volu.volume(); interface Face1 /定義接

43、口定義接口Face1 double pi=3.14; abstract double area();interface Face2 /定義接口定義接口Face2 abstract void volume();575859內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)60public class Group private int age; /聲明外部類(lèi)的私有成員變量聲明外部類(lèi)的私有成員變量 public class Student /聲明內(nèi)部類(lèi)聲明內(nèi)部類(lèi) String name; /聲明內(nèi)部類(lèi)的成員變量聲明內(nèi)部類(lèi)的成員變量 public Student(String n,int a)

44、 /定義內(nèi)部類(lèi)的構(gòu)造方法定義內(nèi)部類(lèi)的構(gòu)造方法 name=n; /訪(fǎng)問(wèn)內(nèi)部類(lèi)的成員變量訪(fǎng)問(wèn)內(nèi)部類(lèi)的成員變量name age=a; /訪(fǎng)問(wèn)訪(fǎng)問(wèn)外部類(lèi)外部類(lèi)的成員變量的成員變量age public void output() /內(nèi)部類(lèi)的成員方法內(nèi)部類(lèi)的成員方法 System.out.println(姓名:姓名:++;年齡:;年齡:+age); public void output() /定義外部類(lèi)的成員方法定義外部類(lèi)的成員方法 Student stu=new Student(劉劉 洋洋,24); /創(chuàng)建內(nèi)部類(lèi)對(duì)象創(chuàng)建內(nèi)部類(lèi)對(duì)象stu stu.output(); /通過(guò)通過(guò)stu調(diào)用

45、內(nèi)部類(lèi)的成員方法調(diào)用內(nèi)部類(lèi)的成員方法 public static void main(String args) Group g=new Group(); g.output(); /用用g調(diào)用外部類(lèi)的方法調(diào)用外部類(lèi)的方法 運(yùn)行結(jié)果:運(yùn)行結(jié)果:姓名:劉姓名:劉 洋;年齡:洋;年齡:2461內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)62public class TestInnerThis public static void main(String args) A a = new A(); A.B b = a.new B(); b.mb(333); class A private int s = 111; pub

46、lic class B private int s = 222; public void mb(int s) System.out.println(s); / 局部變量局部變量s System.out.println(this.s); / 內(nèi)部類(lèi)對(duì)象的屬性?xún)?nèi)部類(lèi)對(duì)象的屬性s System.out.println(A.this.s); / 外層類(lèi)對(duì)象屬性外層類(lèi)對(duì)象屬性s 內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)運(yùn)行結(jié)果:運(yùn)行結(jié)果:33322211163內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)64內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)65class TestInnerInMethod public static void main

47、(String args) Object obj = new Outer().makeTheInner(47); System.out.println(Hello World! + obj.toString() ); class Outer private int size = 5; public Object makeTheInner( int localVar ) final int finalLocalVar = 99; class Inner public String toString() return ( InnerSize: + size + finalLocalVar: + f

48、inalLocalVar ); return new Inner(); 內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)6667new Hello () public int getNum() /匿名類(lèi)的類(lèi)體匿名類(lèi)的類(lèi)體 內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)68內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)69public class App8_15 public static void main(String args) ( new Inner() /創(chuàng)建匿名內(nèi)部類(lèi)創(chuàng)建匿名內(nèi)部類(lèi)Inner的對(duì)象的對(duì)象 void setName(String n) name=n; System.out.println(姓名:姓名:+name); ).se

49、tName(張張 華華); /執(zhí)行匿名內(nèi)部類(lèi)里所定義的方法執(zhí)行匿名內(nèi)部類(lèi)里所定義的方法 static class Inner /定義內(nèi)部類(lèi)定義內(nèi)部類(lèi) String name; 內(nèi)部類(lèi)與匿名類(lèi)內(nèi)部類(lèi)與匿名類(lèi)彌補(bǔ)內(nèi)部類(lèi)彌補(bǔ)內(nèi)部類(lèi)Inner里里沒(méi)有定義到的方法沒(méi)有定義到的方法70717275“.”指明層指明層次次存儲(chǔ)在文件夾存儲(chǔ)在文件夾cgjlymyPackage77包包78包包7980包包例如:例如: import java.awt.myPackage; import java.awt.event.*;“*”表示本表示本層所有的類(lèi)層所有的類(lèi)例如:例如:import java.util.*; class myDate extends Date 或者:或者: class myDate extends java.util.Date82包包83包包84包包85包包8688Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)90Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)91Java語(yǔ)言基礎(chǔ)類(lèi)語(yǔ)言基礎(chǔ)類(lèi)92import java.util.Date;import java.text.SimpleDateFormat;public class DateTest public static void main(String args) D

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論