版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档供参考,可复制、编制,期待您的好评与关注! 1. 第五章 面向对象2. 简述面向对象和面向过程的区别和联系?面向对象以功能来划分问题,面向过程以步骤划分问题。面向对象可以有更好的可移植性和拓展性类是对对象特征的抽象与归纳,对象是类的实例化,如汽车和BMW。66对象和类的关系是?136.面向对象以功能来划分问题,面向过程以步骤划分问题。面向对象可以有更好的可移植性和拓展性138.栈,1.线程私有,不能实现线程之间共享!2.局部变量存于栈中3.系统自动分配,内存连续,速度快139.堆,1.new出来的对象,2.空间不连续,分配灵活,速度慢方法区(堆)1.被所有线程共享2.用来存放永远不变或唯一
2、内容(类代码信息,静态变量,字符串常量)140.141.局部变量在方法或语句块中声明,成员变量在类中方法外声明,从属于对象。静态变量类中方法外声明时用static,从属于类142.必须手动143.数字0,boolean false,char u0000,引用类型null;145.不对,构造方法不用于构造类的对象146.必须一致147.没有返回值148.对象实例化时,被调用149.不能150.自己未定义时会默认添加,自己定义了构造器,系统不添加151.this.type=type类创建对象,类是构造对象的模板和蓝图,创建类的实例!栈的特点是?存放什么内容?栈的特点是数据共享,存放的是数
3、据引用,对象引用,局部变量的值。所有基本数据类型都在栈中。堆得特点是?存放什么内容?堆存放的是具体的对象值,堆可灵活分配内存空间。存放的是new出来的对象。【上机】画出如下程序的内存结构(课堂上的代码):3. 局部变量、成员变量、静态变量分别怎么声明? 局部变量不能初始化,成员变量和静态变量可以进行初始化。不对,构造方法不用于构造类的对象4. 局部变量使用之前,必须要手动初始化吗?必须手动进行初始化!5. 如果不手动指定成员变量的值,系统将会自动初始化。那么初始化的规则是?Int 为0 ,double 是0.0 , String 是null Boolean 是false ,byte 是0.0,
4、 short 是0,6. 成员变量从属于谁? 静态变量又叫什么以及从属于谁? 局部变量从属于谁?成员变量从属于对象,静态变量又叫类变量,从属于类,局部变量从属于方法或语句块。7. 构造方法的作用是两个:一个构造类的对象,另一个作用是初始化对象的属性。这 种说法对不?对8. 构造方法的名称必须保持跟类名一致吗?必须保持一致。9. 构造方法有没有返回值?详细用文字描述返回值问题。构造方法没有返回值,返回值是对象调用这个方法后,返回一个特定类型的值,给主程序,然后继续进行!10. 构造方法如何被调用?构造方法通过参数的类型进行调用,如果没有提供构造方法,那系统会自动提供一个无参数的构造器。11. 构
5、造方法中能不能有return语句?构造方法中不能有return 语句,12. 系统一定会给我们添加无参数的构造方法吗? 请详细解释。不一定,当我们自己提供了个简单的构造方法后,系统就不会再提供。13. 【上机】设计一个类代表二维空间的一个点public class Points int x,y; public Points(int x, int y) super();this.x = x;this.y = y;14. 【上机】设计一个类代表二维空间的一个圆。要求两个成员变量。一个是圆心,一 个是半径提供计算面积的方法。public class Circles int radius ;Point
6、 points;public Circles(int radius, Point points) super();this.radius = radius;this.points = points;double ares() double s = 3.14*radius*radius;return s;public static void main(String args) Point p = new Point(1,1);/ TODO Auto-generated method stubCircles c = new Circles(8, p);System.out.println(c.ar
7、es();15. 【上机】为上述Cricle类添加一个方法,计算一个点(Point对象)是否在圆(Cricle 对象)内,并写程序验证public class Circles int radius ;Point points;private int x;private int y;public Circles(int radius, Point points) super();this.radius = radius;this.points = points;public Circles(int x, int y, int radius)this.x = x;this.y = y;this.r
8、adius = radius;double ares() double s = 3.14*radius*radius;return s; boolean CirclePoint(Point p) double d = (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y);if (d < radius*radius) System.out.println("点在圆内!");elseSystem.out.println("点不在圆内!");return false;public static void main(String args) Po
9、int p = new Point(9,1);/ TODO Auto-generated method stubCircles c = new Circles(8, p);System.out.println(c.ares();System.out.println(c.CirclePoint(p);16. 构造方法能不能重载?可以17. this在普通方法中,指的是哪个对象?在构造方法中,指的是?This 在普通方法中指的是自身,在构造方法中指的是当前类;18. static变量在内存中放置在哪个区? static变量和方法为什么被称为类变量和类方法?可以被该类所有对象共享吗?以下是think
10、ing in java 里面的关于static 的描述:2.6.3 static关键字通常,我们创建类时会指出那个类的对象的外观与行为。除非用new创建那个类的一个对象,否则实际上并未得到任何东西。(注意,这里其实就是说的引用和真正的对象创建问题)只有执行了new后,才会正式生成数据存储空间,并可使用相应的方法。但在两种特殊的情形下,上述方法并不堪用。一种情形是只想用一个存储区域来保存一个特定的数据无论要创建多少个对象,甚至根本不创建对象。另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。为满足这两方面的要求,可使用stati
11、c(静态)关键字。一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起。所以尽管从未创建那个类的一个对象,仍能调用一个static方法,或访问一些static数据。而在这之前,对于非static数据和方法,我们必须创建一个对象,并用那个对象访问数据或方法。这是由于非static数据和方法必须知道它们操作的具体对象。当然,在正式使用前,由于static方法不需要创建任何对象,所以它们不可简单地调用其他那些成员,同时不引用一个已命名的对象,从而直接访问非static成员或方法(因为非static成员和方法必须同一个特定的对象关联到一起)。有些面向对象的语言使用了&quo
12、t;类数据"和"类方法"这两个术语。它们意味着数据和方法只是为作为一个整体的类而存在的,并不是为那个类的任何特定对象。有时,您会在其他一些Java书刊里发现这样的称呼。为了将数据成员或方法设为static,只需在定义前置和这个关键字即可。例如,下述代码能生成一个static数据成员,并对其初始化:class StaticTest Static int i = 47;现在,尽管我们制作了两个StaticTest对象,但它们仍然只占据StaticTest.i的一个存储空间。这两个对象都共享同样的i。请考察下述代码:StaticTest st1 = new Static
13、Test();StaticTest st2 = new StaticTest();此时,无论st1.i还是st2.i都有同样的值47,因为它们引用的是同样的内存区域。有两个办法可引用一个static变量。正如上面展示的那样,可通过一个对象命名它,如st2.i。亦可直接用它的类名引用,而这在非静态成员里是行不通的(最好用这个办法引用static变量,因为它强调了那个变量的"静态"本质)。StaticTest.i+;其中,+运算符会使变量增值。此时,无论st1.i还是st2.i的值都是48。类似的逻辑也适用于静态方法。既可象对其他任何方法那样通过一个对象引用静态方法,亦可用特殊
14、的语法格式"类名.方法()"加以引用。静态方法的定义是类似的:class StaticFun static void incr() StaticTest.i+; 从中可看出,StaticFun的方法incr()使静态数据i增值。通过对象,可用典型的方法调用incr():StaticFun sf = new StaticFun();sf.incr();或者,由于incr()是一种静态方法,所以可通过它的类直接调用:StaticFun.incr();尽管是"静态"的,但只要应用于一个数据成员,就会明确改变数据的创建方式(一个类一个成员,以及每个对象一个非静态
15、成员)。若应用于一个方法,就没有那么戏剧化了。对方法来说,static一项重要的用途就是帮助我们在不必创建对象的前提下调用那个方法。正如以后会看到的那样,这一点是至关重要的特别是在定义程序运行入口方法main()的时候。和其他任何方法一样,static方法也能创建自己类型的命名对象。所以经常把static方法作为一个"领头羊"使用,用它生成一系列自己类型的"实例"。19. 静态初始化块和main方法哪个先被执行?静态初始化块在类加载的时候就执行,main方法的执行在静态初始化块的后面才执行。20. 一个构造方法调用另一个构造方法怎么调用? this(),
16、这样的调用方式必须位于第一句吗?嗯必须位于第一句;用this 必须位于第一句。21. package的两个作用是什么?Package 是包 用来区别类,同名类。不同的包下不能共享数据和变量对象。22. 增加package以后,我们在DOS下编译怎么做?Javac 把包路径也一块加上即可23. import是用于导入包还是导入类?import是用来导入包的。24. import Java.util.*; 会不会降低程序运行速度?为什么?会 使得程序速度变慢。25. import static 静态导入的作用是导入类还是导入类的静态属性和静态方法?Import static 静态导入的是静态方法2
17、6. 如果同时导入:Java.util.Date; Java.sql.Date; 在程序中怎么区分它们?可以在创建对象的时候加入前缀27. 【上机】 完成this、static、package、import的测试代码28. Javadoc注释怎么写?三种方式 /*/*/29. Java项目的API文档如何生成?请将步骤写出。步骤;Eclipse 中project中Generate Javadoc完成30. 面向对象中的封装,追求的是“高内聚,低耦合”。解释一下,内聚什么?什么叫 耦合?就是类与类之间尽量减少联系,不要相互影响太多,31. 封装的几个关键字:private,default,pro
18、tected,public的含义。 私有的 默认的 受保护的 公有的32. 一般属性是否要设置为private? 是33. 如果属性设置为private,如何让外部访问该属性?通过接口34. 提供getter、setter方法的操作,Eclipse中如何实现?Source 中找generate getterg and setter35. 对于boolean类型的属性,提供的getter方法是:getXXX或是isXXX?public boolean isFlag() return flag;public void setFlag(boolean flag) this.flag = flag;3
19、6. Javabean就是只包含属性和相关getter、setter方法,不包含业务逻辑处理的类, 这种说法对吗?37. 继承的好处是什么?提高代码的重复性38. Java中有多继承吗?C+中有多继承吗? 单继承相比多继承优势在什么地方?39. 【上机】模仿课堂上动物世界的例子,我们自己写个例子。40. Java的继承使用哪个关键字实现?extends41. 定义某个类时,如果没有使用extends,那么继承了哪个类?Object 42. Java中,有没有多继承? 请说明,Java为什么取消了多继承?没有多继承,先从Java 8之前说起。要区分“声明多继承”与“实现多继承”。Java是不允许
20、“实现多继承”,简称不允许“多继承”。但是Java支持“声明多继承”Java的接口的多继承一个类可以实现多个接口(“继承”了多个接口上的方法声明),而一个接口可以继承多个接口(同样是“继承”了多个接口上的方法声明)。接口只允许有方法声明而不允许有实现,因而不会出现像C+那样的实现多继承的决议问题;抽象类可以有方法实现,但要遵循Java类的单继承限制,也避免了实现多继承的问题。这是早期Java为了与C+区分开的一个决定。43. 重写(override)指的是什么?方法重写 指的是继承中的,子类重写父类。44. 假如父类有main方法,子类能不能继承?子类能继承父类的main方法,但是要重写mai
21、n方法。子类调用父类的main方法,同时执行main方法,子类调用子类的main方法,只能执行子类的main方法,不能执行父类的main方法。45. Object是所有类的根类吗?是所有类的直接父类吗?是根类,不是父类,46. 在哪里查看Object类的源代码?在API里面47. Object类中的toString方法能否被子类重写?请做测试。可以重写tostring方法48. 【上机】完成继承、Object相关的测试代码49. super指的是什么?指的是直接父类50. 构造方法中,第一个话总是super吗?不是,没有父类的话就不用super51. 叙述一下,有继承结构时,构造方法的调用顺序
22、?先调用父类的构造方法,再调用子类构造方法52. 重写中,子类的返回值类型可不可以跟父类不完全一致?说出你的理由。返回值类型必须一样,返回值类型,方法名,参数列表必须全部一样53. 如何判断两个对象内容是否相同?重写equals()有什么要求?equals方法,54. 举一个现实的例子,说明多态。子类是父类的多种表现形式55. 多态的三个必要条件是什么?继承,重写,父类引用指向子类对象56. 什么是向上转型?什么是向下转型?类的向上转型,和向下转型,接口的向上转型,向下转型57. 多态的常用使用场合有哪些?58. Java的方法绑定采用动态绑定还是静态绑定?动态绑定59. final修饰变量、
23、方法、类分别表示什么含义?final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法。注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。1、final类final类不能被继承,因此final类的成员
24、方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。2、final方法如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。使用final方法的原因有二:第一、把方法锁定,防止任何继承类修改它的意义和实现。第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。例如:public class Test1 public static void main(String args)&
25、#160;/ TODO 自动生成方法存根public void f1() System.out.println("f1");/无法被子类覆盖的方法public final void f2() System.out.println("f2");public void f3() System.out.println("f3");private void f4() System.out.pri
26、ntln("f4");public class Test2 extends Test1 public void f1()System.out.println("Test1父类方法f1被覆盖!");public static void main(String args) Test2 t=new Test2();t.f1();t.f2(); /调用从父类继承过来的final方法t.f3(); /调用从
27、父类继承过来的方法/t.f4(); /调用失败,无法从父类继承获得 3、final变量(常量)用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象
28、而有所不同,却有保持其恒定不变的特征。package org.leizhimin;public class Test3 private final String S="final实例变量S"private final int A=100;public final int B=90;public static final int C=80;private static final int D=70;public final int E; /final空白,必须在初始化对象的时候赋初值public Test3(int x)E=x;/* param args*/publi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 再生水利用的推广政策计划
- 2024年医疗设备采购及销售合同
- 2024年度专利实施许可质押合同(2024版)3篇
- 二零二四年度美缝工程质量保修合同3篇
- 青年创业购房合同协议
- 美容院护士招聘协议模板
- 机场照明设施改造劳务合同
- 船舶制造水井租赁合同
- 餐饮运输租赁合同模板
- 图书馆办公室租赁合同
- 管道试压冲洗方案
- 工程制图习题集第四版答案高等教育出版社PPT通用课件
- 一年级趣味数学小故事
- 国家开放大学《水利水电工程造价管理》形考任务1-4参考答案
- (完整版)污泥处置实际案例
- 计量标准技术报告(水表)
- 用word制作课程表ppt课件
- 后进生落后表现及原因4篇
- 准确解析BET孔径分析(课堂PPT)
- 如何突破三视图教学几个难点
- 才华横溢摄影作品评分表
评论
0/150
提交评论