资源预览内容
第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
第9页 / 共78页
第10页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章第三章类与对象目标q面向对象技术基础面向对象技术基础q类的概念、定义与使用类的概念、定义与使用q对象的生成、使用对象的生成、使用qstatic关键字关键字qthis关键字关键字qfinal关键字关键字qJava类中的限定词类中的限定词q包和包和import语句语句2面向对象编程OOPOOP旨在在计算机程序中模拟现实世界中的概念在 OOP 中,现实世界的所有事物全都被视为对象能够在计算机程序中用类似的实体模拟现实世界中的实体设计和实现软件系统的方法3相关概念4对象对对对对 象象象象面向对象编程的核心为计算机应用程序提供实用基础完成特定任务表示现实世界中的实体对象是客观存在的具体实体,具有明确定义的状态和行为。对象是客观存在的具体实体,具有明确定义的状态和行为。5对象的示例收银员对象顾客对象顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品状态状态姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印帐单行为行为6类q类是用于组合各个对象所共有操作和属性的一种机制形状类形状类动物类动物类汽车类汽车类类的示例类的示例“类是具有相同属性和行为的一组对象的集合类是具有相同属性和行为的一组对象的集合”7类和对象的示例雇员雇员收银员系统管理员仓库管理员促销员采购经理8属性q事物的特性,在类中表示为变量q每个对象的每个属性都拥有其特有的值q属性名称由类的所有实例共享住址住址姓名姓名属性属性年龄年龄“在类中表示对象或实体拥有的特性时称为属性在类中表示对象或实体拥有的特性时称为属性 ”促销员对象促销员对象9方法方法方法方法方法操作的实际实现如何执行所请求的操作的规范方法指定操作对象数据的方式在得到操作请求时指定如何做的算法“对象执行的操作称为方法。对象执行的操作称为方法。”10方法的示例缝衣服的步骤缝衣服的步骤量尺寸量尺寸得到工具得到工具缝衣服缝衣服方法方法缝制衣服裁缝裁缝11类和对象的区别 类是概念模型, 定义对象的所 有特性和所需 的操作对象是真实的模型类和对象类和对象类定义实体对象是实际的实体类是对象的原型类是对象的原型类是对象的原型类是对象的原型所有属于同一个类所有属于同一个类所有属于同一个类所有属于同一个类的对象都具有相同的对象都具有相同的对象都具有相同的对象都具有相同的特性和操作的特性和操作的特性和操作的特性和操作12面向对象的基本特征13封装性q信息隐藏,隐藏对象的实现细节,不让用户看到q将东西包装在一起,然后以新的完整形式呈现出来q例如,两种或多种化学药品组成一个胶囊q将方法和属性一起包装到一个单元中,单元以类的形式实现“隐藏属性、方法或实现细节的过程称为封装。隐藏属性、方法或实现细节的过程称为封装。”14封装的示例 3-1接口 采购经理罗杰斯先生法拉力公司.迪斯尼汽车公司.市场经理雪莉女士 要求15 封装的示例 3-2有选择地提供数据法拉力公司迪斯尼汽车公司公共电话号码电子邮箱产品种类私有备件的制造方法备件库存备件的制造成本公共电话号码电子邮箱汽车种类私有汽车的组装方法汽车库存汽车的组装成本16封装的示例 3-3 实体法拉力公司实体迪斯尼汽车公司 Auti Ltd.Buto Ltd.属性电话号码电子邮箱产品种类现有存货数量雇员详情所需物料详情属性电话号码电子邮箱汽车种类汽车规格雇员详情库存详情经销商详情方法接收订单备件的制造方法计算备件的制造成本计算利润率方法发出订单汽车的组装方法计算汽车的组装成本计算工资发出订单编制必要报告17继承性父父 类类 子类子类 父类父类/ /子类是子类是相对的相对的Cow类Lion类Tiger类类Animals类Carnivorous类Herbivorous类Coat类18多态性父类子类 - 绘制和移动三角形子类 - 绘制和移动矩形 子类 - 绘制和移动五边形ShapeShapeDraw ()Move ()TriangleDraw () DrawTraingleMove () MoveTriangleVerticesRectangleDraw () DrawRectangleMove () MoveRectangleCornerPentagonDraw () DrawPentagonMove () MovePentagonVertices子类19面向对象的Java实现20在 Java 中实现类 语法语法class 其中,class 是创建类所使用的关键字, 是类的名称, 包含属性和方法的声明。21在 Java 中实现类q类的命名规则:q要符合标识符规则;不能为 Java 中的关键字q类名最好容易识别,多为英文单词组成class Book String bookName; String authorName; int nopages; boolean available; void isAvailable() if(available = true) System.out.println(有这本书); 22成员变量和局部变量成员变量和局部变量q类体中的变量分为两部分。变量定义部分所定义的变量称为类的成员变量,在方法体中定义的变量和方法的参数被称为局部变量。q成员变量和局部变量的共同之处成员变量和局部变量的共同之处q成员变量和局部变量的类型都可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组类型、对象。q成员变量和局部变量的名字都必须符合标识符规定,名字如果使用拉丁字母,首写字母小写;如果多个单词组成,从第2个单词开始的其他单词的首写字母使用大写。q成员变量和局部变量的区别:成员变量和局部变量的区别:成员变量在整个类内都有效,局部变量只在定义它的方法内有效。23成员变量和局部变量成员变量和局部变量public class Benson int x = 100, y;void f() int x = 10;y = x; / 注意这里注意这里y得到的值为得到的值为10,而不是,而不是100.注:如果局部变量的名字与成员变量的名字相同,则成员注:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,也就是说,这个成员变量在这个方法内暂变量被隐藏,也就是说,这个成员变量在这个方法内暂时失效。时失效。24成员变量和局部变量成员变量和局部变量public class Employee int sideA, sideB, sideC;void setSide(int sideA, int sideB, int sideC) this.sideA = sideA;this.sideB = sideB;this.sideC = sideC;注:如果局部变量的名字与成员变量的名字相同,则成员注:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,这时如果想在该方法内使用成员变量,必变量被隐藏,这时如果想在该方法内使用成员变量,必须使用关键字须使用关键字this。25类中的方法方法的定义方法的定义方法的名称参数列表方法的主体方法返回的对象类型或原始类型26类中的方法语法 ( , ,) 其中, 是方法返回值的数据类型 是用户自定义的方法名称方法的参数列表是一组变量声明。是方法的主体27类中的方法不能为 Java 中的关键字不能包含空格或点号“.”可以下划线“_”、字母或“$”符号开头方法的命名规则方法的命名规则:28类中的方法class Book String bookName; String authorName; int nopages; boolean available; void isAvailable() if(available = true) System.out.println(有这本书); .方法29创建对象q定义类的最终目的是要使用这些类,创建并操纵某类的对象是使用该类的最主要手段。q创建对象的一般格式为:类名 对象名 = new 类名(参数);q其中包含声明、实例化和初始化3个步骤 声明:类名声明:类名 对象名对象名 声明并不为对象分配内存空间,而只是分配一个引用声明并不为对象分配内存空间,而只是分配一个引用空间;对象的引用类似于指针,是空间;对象的引用类似于指针,是32位的地址空间,它位的地址空间,它的值指向一个中间的数据结构,它存储有关数据类型的的值指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。实际的内存地址是不可操作的,这就保证了安全性。 实例化实例化 运算符运算符new为对象分配内存空间,它调用对象的构造为对象分配内存空间,它调用对象的构造方法,返回引用。一个类的不同对象分别占据不同的内方法,返回引用。一个类的不同对象分别占据不同的内存空间。存空间。 生成生成 执行构造方法,进行初始化;根据参数不同调用相应执行构造方法,进行初始化;根据参数不同调用相应的构造方法。的构造方法。30创建对象class Student float height, weight;String head, ear, hand, foot, mouth;void speak(String s) System.out.println(s);class A public static void main(String args) Student ZhangSan; / 声明对象声明对象 / 为对象分配内存,使用为对象分配内存,使用new 运算符和默认的构造方法运算符和默认的构造方法ZhangSan = new Student();31对象的使用q对象不仅可以改变自己变量的状态,而且还拥有使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。通过圆点符号“.”可以实现对变量的访问和方法的调用。变量和方法可以通过设定访问权限来限制其它对象对它的访问。 32class Book String bookName; String authorName; int nopages; boolean available; Book(String bName,String aName,int Page,boolean a) bookName=bName; authorName=aName; nopages=Page; available=a; void isAvailable() if(available = true)System.out.println(有这本书); public class BookTest public static void main(String args) Book objBook = new Book(a,b,3,true);objBook.isAvailable();System.out.println(objBook. bookName);33class Book String bookName; String authorName; int nopages; boolean available;void isAvailable() if(available = true)System.out.println(有这本书); public class BookTest public static void main(String args) Book objBook = new Book();objBook.bookName=a;.objBook.isAvailable();System.out.println(objBook. bookName);34练习q创建一个Date类,具有三个整型成员变量year,month,day,具有三个成员方法setDate,isLeapYear,print,其中setDate用来给成员变量赋值, isLeapYear用来判断当前年份是否为闰年, print用来输出当前日期值。q在主函数中创建Date类的对象,并调用三个成员函数实现赋日期值,输出日期值,并判断当前年份是否为闰年。35构造方法q每当创建给定类的实例时就调用的方法q与类同名,但没有返回类型qJava 为对象分配内存,初始化实例变量时调用构造方法q两种构造方法q参数化构造方法q隐式构造方法36隐式构造方法的示例class Sdate int month=11; int day=27; int year=1969; public static void main(String args ) Sdate S1; S1=new Sdate(); 隐式构造方法37参数化构造方法的示例class Sdate int month; int day; int year; Sdate(int m,int d,int y) month=m; day=d; year=y; System.out.println(“日期是 + m + / + d + / + y + .); public static void main(String args) Sdate S1,S2; S1=new Sdate(11,27,1969); S2=new Sdate(3,3,1973); 参数化构造方法日期是 11/27/1969.日期是 3/3/1973.38参数化构造方法的示例class Sdate int month; int day; int year; Sdate(int m,int d,int y) month=m; day=d; year=y; System.out.println(“日期是 + m + / + d + / + y + .); public static void main(String args) Sdate S1,S2; S1=new Sdate(); S2=new Sdate(3,3,1973); The constructor Sdate() is undefined39参数传值q当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。public class Date /类声明 int year,month,day; /成员变量,表示年、月、日 void setDate(int y,int m,int d) /成员方法,设置日期值 /无返回值,有3个参数 year = y; month = m; day = d; public static void main(String args) Date1 aday = new Date1() ; /创建对象 aday.setDate(2006,1,28); /调用类方法 401基本数据类型参数的传值基本数据类型参数的传值q基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别,比如,不可以向int类型参数传递一个float值,但可以向double类型参数传递一个float值。这种数据传递方式被称为是值传递,方法接收参数的值,但不能改变这些参数的值。412引用类型参数的传值引用类型参数的传值q引用传值方式:Java的引用类型数据包括对象、数组和接口,当方法中参数是引用类型时,引用数据类型传递给方法的是数据在内存中的地址,方法中对参数变量的操作可以改变原变量的值。 42class People String face;void setFace(String s) face = s;class C void f(int x, double y, People p) x = x + 1;y = y + 1;p.setFace(笑脸笑脸);System.out.println(参数参数x和和y的值分别是的值分别是: + x + , + y);System.out.println(参数对象参数对象p的的face是是: + p.face);public class Ep3_8 public static void main(String args) int m = 100;double n = 100.88;People zhang = new People();zhang.setFace(很严肃的样子很严肃的样子);C a = new C();a.f(m, n, zhang);System.out.println(main方法中方法中m和和n的值仍然分别是的值仍然分别是: + m + , + n);System.out.println(main方法中对象方法中对象zhang的的face是是: + zhang.face);zhang.face= 很严肃的样子;改变形参值 导致实参值的改变zhang.face= “笑脸;参数x和y的值分别是:101,101.88参数对象p的face是:笑脸main方法中m和n的值仍然分别是:100,100.88main方法中对象zhang的face是:笑脸43方法重载方法重载方法重载类中有多个具有相同名称的方法方法重载方法重载方法重载方法重载类中有多个具有相同名称的方法方法具有不同的参数列表或者是参数的个数不同,或者是参数类型不同n注意:方法返回值的类型不能用来区分重载的方法。不能通过两个方法的返回值的类型来区分它们。这是因为当你调用一个方法时,返回值的类型是不显示的。44class MethodOverloading void receive(int i) System.out.println(Receive one int data);System.out.println(i= + i);void receive(int x, int y) System.out.println(Receive two int datas);System.out.println(x= + x + y= + y);public class MethodOverloadingTest public static void main(String args) MethodOverloading mo = new MethodOverloading();mo.receive(1);mo.receive(2, 3);45构造方法的重载class Sdate int month; int day; int year; Sdate(int m,int d,int y) month=m; day=d; year=y; System.out.println(“日期是日期是 + m + / + d + / + y + .); Sdate() Sdate(int m,int y) month=m; year=y; public static void main(String args) Sdate S1,S2; S1=new Sdate(); S2=new Sdate(3,3,1973); 46static 修饰符q成员变量可以分为实例变量和类变量。同样,类中的方法也可分为实例方法和类方法。用static关键字修饰的变量是类变量,也称静态变量,同样的,用static关键字修饰的方法是类方法,也称静态方法q目的:使该变量或方法独立于类的实例,使用类去访问,而不用类实例47static 修饰符注意:q如果在声明时不用static关键字修饰,则默认声明为实例变量和实例方法。q每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。q类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,q每个实例对象对类变量的改变都会影响到其它的实例对象。q类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。48class Laderfloat upperBase, high;static float lowerBottom;Lader(float x, float y, float h) upperBase = x;lowerBottom = y;high = h;float getLowerBottom() return lowerBottom; void modifyLowerBottom(float b) lowerBottom = b;public class Ep3_9 public static void main(String args) Lader laderOne = new Lader(3.0f, 10.0f, 20), laderTwo = new Lader(2.0f, 3.0f, 10); Lader.lowerBottom = 200; / 通过类名操作类变量 System.out.println(laderOne的下底: + laderOne.getLowerBottom(); System.out.println(laderTwo的下底: + laderTwo.getLowerBottom(); laderTwo. lowerBottom = 60; /laderTwo.modifyLowerBottom(60); / 通过对象操作类变量 System.out.println(laderOne的下底: + laderOne.getLowerBottom(); System.out.println(laderTwo的下底: + laderTwo.getLowerBottom();laderOne的下底:200.0laderTwo的下底:200.0laderOne的下底:60.0laderTwo的下底:60.049static 修饰符注意:q实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,实例方法由实例对象调用。q但类方法不能访问实例变量,只能访问类变量。类方法可以由类名直接调用,也可由实例对象进行调用。50class Member static int classVar;int instanceVar;static void setClassVar(int i) classVar = i;/ instanceVar=i; / 类方法不能访问实例变量类方法不能访问实例变量static int getClassVar() return classVar;void setInstanceVar(int i) classVar = i; / 实例方法不但可以访问类变量,也可以实例变量实例方法不但可以访问类变量,也可以实例变量instanceVar = i;int getInstanceVar() return instanceVar;public class MemberTest public static void main(String args) Member m1 = new Member();Member m2 = new Member();m1.setClassVar(1);m2.setClassVar(2);System.out.println(m1.classVar= + m1.getClassVar() + m2.ClassVar=+ m2.getClassVar();m1.setInstanceVar(11);m2.setInstanceVar(22);System.out.println(m1.InstanceVar= + m1.getInstanceVar()+ m2.InstanceVar= + m2.getInstanceVar();m1.classVar=2m2.ClassVar=2m1.InstanceVar=11 m2.InstanceVar=2251this 关键字qthis是是Java的一个关键字,表示某个对象。的一个关键字,表示某个对象。qthis可以出现在实例方法和构造方法中,可以出现在实例方法和构造方法中,但不可以出现在类但不可以出现在类方法中方法中。qthis关键字出现在类的构造方法中时,代表使用该构造方法关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。所创建的对象。q实例方法必须通过对象来调用,当实例方法必须通过对象来调用,当this关键字出现在类的实关键字出现在类的实例方法中时,代表正在调用该方法的当前对象。例方法中时,代表正在调用该方法的当前对象。q成员函数中定义了和成员变量中相同的变量时,引用成员变成员函数中定义了和成员变量中相同的变量时,引用成员变量要用量要用this. q构造函数中调用同一个类的其他构造函数时用构造函数中调用同一个类的其他构造函数时用this。52【例】编写两个重载构造函数的类,在第二个构造函数中使用this调用第一个构造函数。public class ThisConstructorCall public ThisConstructorCall(String s) System.out.println(s = + s);public ThisConstructorCall(int i) this(i = + i);public static void main(String args) ThisConstructorCall t =new ThisConstructorCall(String call); ThisConstructorCall ct =new ThisConstructorCall(47);s = String calls = i = 4753this 关键字的示例class Pixel int x;int y; void init (int x, int y) this.x = x; this.y = y; public static void main (String args) Pixel p = new Pixel(); p.init (4,3); 对象的引用54final 关键字qfinal 关键字可以修饰类、类的成员变量和成员方法。q用final修饰成员变量,说明该成员变量是最终变量,即为常量。程序中的其他部分可以访问,但不能够修改。q用final修饰成员方法,则该方法不能再被子类所重写,即该方法为最终方法。551final 修饰成员变量修饰成员变量final修饰变量,则成为常量,例如 final type variableName; 修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求。 562final 修饰成员方法修饰成员方法final修饰方法,则该方法不能被子类重写。final returnType methodName(paramList) 573final 类类qfinal修饰类,则类不能被继承。如果一个类被final关键字修饰,说明这个类不能再被其他类所继承,该类被称为最终类。final class finalClassName 在默认情况下,所有的成员变量或成员方法都可以被隐藏或重写,如果父类的成员不希望被子类的成员所隐藏或重写则将其声明为final。58class ep3_12_a static final double pi = 3.1415926; / 声明静态常量 public final void f() / 声明最终方法System.out.println(pi= + pi); class ep3_12_b extends ep3_12_a int num = 100;private void f() / 出错,不可覆盖父类的最终方法System.out.println(num= + num);class ep3_12 public static void main(String args) ep3_12_b One = new ep3_12_b();One.f();q需要注意的是:需要注意的是:q被被private声明为私有的方法,以及包含在声明为私有的方法,以及包含在final类中的方法都被默认为是最类中的方法都被默认为是最终的。终的。q用用static和和final两个关键字修饰变量时,若不给定初始值,则按照默认规两个关键字修饰变量时,若不给定初始值,则按照默认规则对变量初始化。若只用则对变量初始化。若只用final修饰而不用修饰而不用static,就必须且只能对该变量,就必须且只能对该变量赋值一次,不能默认。赋值一次,不能默认。59访问修饰符q信息隐藏是 OOP 最重要的功能之一,也是使用访问修饰符的原因qJava 语言中有四种不同的访问修饰符,提供了四种不同的访问权限,访问修饰符主要用来修饰成员变量或方法。 访问修饰符访问修饰符访问修饰符访问修饰符访问修饰符访问修饰符privateprotectedpublicdefault60访问修饰符该类或非该类均该类或非该类均可访问可访问public只有该类可以访只有该类可以访问问private相同数据包中的相同数据包中的类可以访问类可以访问default该类及其子类的该类及其子类的成员可以访问,成员可以访问,同一个包中的类同一个包中的类也可访问也可访问protected611privateq用private修饰的成员变量和方法称为私有变量和私有方法,类中限定为private的成员,只能被这个类本身访问。如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。q对于私有成员变量和方法,只有在本类中创建该类的对象时,这个对象才可以访问自己的私有成员变量和类中的私有方法,如下例所示: 62class Ep3_13 private int money;Ep3_13() money = 2000;private int getMoney() return money;public static void main(String args) Ep3_13 exa = new Ep3_13();exa.money = 3000;int m = exa.getMoney();System.out.println(money= + m);63class E4 private int money;private E4() money = 2000;private int getMoney() return money;class E3public static void main(String args) E4 exa = new E4();exa.money = 3000; int m = exa.getMoney(); /The field E4.money is not visible/The method getMoney() from the type E4 is not visible/The constructor E4() is not visible64class E4 private int money; E4() money = 2000; int getMoney() return money;int setMoney(int x)Money=x;class E3public static void main(String args) E4 exa = new E4();int m = exa.getMoney(); System.out.println(m);exa.setMoney(10);m = exa.getMoney(); System.out.println(m);65q2default 类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。非本包内的类不能访问。q3protected 类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。q4public 用public修饰的成员变量和方法称为共有变量和共有方法,类中限定为public的成员,可以被所有的类访问。在任何一个类中用构造方法创建了一个对象后,这个对象都可以访问自己的public变量和方法。66访问修饰符q访问修饰符可访问性位置private默认protectedpublic同一个类是是是是同一个包内的类否是是是不同包内的子类否否是是不同包并且不是子类否否否是67包q包是将一些类聚集在一起的一个实体,是Java语言中有效管理类的一个机制。q当一个大型程序交由数个不同的程序人员开发时,用到相同的类名是很有可能的,Java程序开发中为了避免这种情况,提供了一个包的概念(package)。同一个包内的类名不允许重复,不同包内可以有相同名称的类。68包语句q使用包很简单,通过关键字package声明包语句。package语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。package语句一般格式为:package packageName;q包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,如:package tom;package sun.com.cn;q如果源文件中省略了package语句,那么源文件定义的类隐含地认为是无名包的一部分,也就是说源文件定义命名的类在同一个包中,但该包没有名字。69创建包package mypackage;public class Calculate public double volume(double height, double width, double depth) 声明包70import语句q在编写程序时,除了自己编写类外,还经常需要使用Java提供的许多类,这些类可能在不同的包中,使用import语句可以引入包中的类。 q在一个Java源文件中可以有多个import语句,它们在程序中的位置是有要求的,必须写在package语句和源文件的类定义之间。q要引入java.util包中的Date类,使用:import java.util.Date;q如果要引入一个包中的全部类,则可以用星号来代替,如: import java.awt.*;71导入包package mypackage;import mypackage.Calculate;import java.applet.Applet;import java.awt.*;public class PackageDemo public static void main(String args) Calculate calc=new Calculate( ); 72练习1、 下列关于变量的叙述哪个是错的?( )A. 实例变量是类的成员变量。B. 在方法中定义的局部变量在该方法被执行时创建。C. 实例变量用关键字static声明。D. 局部变量在使用前必须被初始化。解答:C2、不允许作为类及类成员的访问控制符的是( )。A. publicB. private C. staticD. protected 解答:C73练习3、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。A、 static void method( ) B、 public void method( )C、 final void method( )D、 abstract void method( )解答:A74练习4、可以在下面代码段point x处写入的是?( )/point x public class Interesting /do something A.String str;B.static int PI=3.14;C.public class MyClass/do other thingD.import java.awt.*; 解答:D75练习5、已知A类被打包在packageA , B类被打包在packageB ,且B类被声明为public ,且有一个成员变量x被声明为protected控制方式 。C类也位于packageA包,且继承了B类 。则以下说法正确的是:( )A、A类的实例不能访问到B类的实例B、A类的实例能够访问到B类一个实例的x成员C、C类的实例可以访问到B类一个实例的x成员D、C类的实例不能访问到B类的实例解答:C6、下列命题为真的是:( ) A、所有类都必须定义一个构造函数。 B、构造函数必须有返回值。 C、构造函数可以访问类的非静态成员。 D、构造函数必须初始化类的所有数据成员。 解答:C76练习7、在Java中,关于final关键字的说法正确的是( )A、如果修饰变量,则一旦赋了值,就等同一个常量。B、如果修饰类,则该类只能被一个子类继承。C、如果修饰方法,则该方法不能在子类中被覆盖。D、如果修饰方法,则该方法所在的类不能被继承。解答:A,C8、在Java中,下面关于包的陈述中正确的是( )A、包的声明必须是源文件的第一句代码。B、包的声明必须紧跟在import语句的后面。C、只有公共类才能放在包中。D、可以将多个源文件中的类放在同一个包中。解答:A,D77练习q编写一个编写一个Java应用程序,该程序中有应用程序,该程序中有3个类:个类:Triangle、Leder和和Circle,分别用来刻画,分别用来刻画“三角形三角形”、“梯形梯形”和和“圆形圆形”。具体要求如下:。具体要求如下:a) Triangle类具有类型为类具有类型为double的的私有私有属性三个边属性三个边长度长度以及周长,具有以及周长,具有返回周长返回周长和和修改三个边的修改三个边的私有私有功能。另外,功能。另外,Triangle类还具有一个类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。型的属性,该属性用来判断三个属能否构成一个三角形。b)Lader类具有类型类具有类型为为double的的私有私有属性上底、下底、高、面积,具有属性上底、下底、高、面积,具有返回面积的功能。返回面积的功能。c) Circle类具有类型为类具有类型为double的的私有私有属性半径、周长和面积,具有返回属性半径、周长和面积,具有返回周长、面积的功能。周长、面积的功能。q在一个新的在一个新的public类中创建并使用三个类的对象:类中创建并使用三个类的对象:a)Triangle类:创建对象,并使用构造函数进行初始化。计算出周长值类:创建对象,并使用构造函数进行初始化。计算出周长值并输出并输出 ;修改三边值并判断是否构成三角形;修改三边值并判断是否构成三角形b)Lader类类:创建对象并初始化,然后计算面积并输出:创建对象并初始化,然后计算面积并输出c)Circle类类:创建对象并初始化,然后计算:创建对象并初始化,然后计算周长、面积周长、面积并输出并输出78
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号