java中的类访问权限与成员访问权限
- 格式:pdf
- 大小:174.25 KB
- 文档页数:2
(1)类的默认的无参构造函数[ ]。
A) 在任何情况下都存在B) 仅当未定义无参构造函数时存在C) 仅当未定义有参构造函数时存在D) 仅当未定义任何构造函数时存在(2) 类的默认的拷贝构造函数[ ]。
A) 在任何情况下都存在B) 仅当未定义拷贝构造函数时存在C) 仅当未定义有参构造函数时存在D) 仅当未定义任何构造函数时存在改错题:每题有一处错误,请在出错语句后用注释说明出错原因并提出更改意见(1)class Location {int X , Y ;protected:int SetZero(int zeroX, int zeroY);private:int length, height;public:void Location(int initX, int initY);int GetX( );int GetY( ); };(2)下面的程序有一处语法错误:#include <iostream.h>class Pair{int X, Y;public:Pair (int initX, int initY): X(initX), Y(initY){}int sumXY(){return X+Y; };};void main(){Pair A1(5,3);cout<<A1.X+A1.Y;}题 1.分析以下程序执行的结果#include<iostream.h>#include<stdlib.h>class Sample{public:int x,y;Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;}};void main(){Sample s1(2,3);s1.disp();}解:本题说明了重载构造函数的定义方法。
期末复习试卷(三)一、单项选择题1、有一段java应用程序,其中包含一个公共类,名字为TestStudent,那么保存它的源文件名是()A。
teststudent。
javaB。
teststudent 。
classC. TestStudent。
javaD. TestStudent。
class正确答案:C解析:一个java文件中可以包含多个类,但最多只能有一个类是公共类(public),该java文件的名字要与公共类的一致.2、关于下面的代码,哪个描述是正确的?public class Test{public static void main(String[]args){Integer n1 = new Integer(3);Object n2 = new Integer(4);System.out.println(pareTo(n2));}}A。
可以编译通过,可以运行,并得到预期结果.B。
可以编译通过,可以运行,但不能得到预期结果。
C。
可以编译通过,但又运行错误.D. 有编译错误。
正确答案:D解析:Integer类是基本数据类型int的包装类,里面封装了一个int类型的值,提供了一些实用的方法(例如:在JavaFX中读取文本框内容是String类型的,如果要转换成int类型,就要调用Integer类的parseInt()方法)并实现了Comparable接口,在Comparable接口中定了抽象方法compareTo(T o), T是泛型,对于Integer 类,T被替换为Integer,如下图:因此,Integer类中compareTo()方法的定义如下:因此,compareTo的参数只能是Integer类型的,所以代码中的下面语句中的n2的类型需要进行强制类型转换,由Object转为Integer:System。
out.println(pareTo(n2));正确写法如下:System.out.println(pareTo((Integer) n2));类似的包装类还有Long\Float\Double\Char\Boolean等,都是将基本数据类型包装为类。
Java访问权限控制Java访问权限控制修饰符⽤来定义类、⽅法或者变量,通常放在语句的最前端。
Java语⾔提供了很多修饰符,主要分为以下两类:访问修饰符⾮访问修饰符其中⾮访问修饰符主要有:static、final、abstract、synchronized和volatile,⾮访问修饰符根据各⾃的特性来保证特定功能的实现。
Java中使⽤访问控制符来保护对类、变量、⽅法和构造⽅法的访问,访问控制修饰符对应的权限控制的⼤⼩情况为:public > protected > default(包访问权限) > private。
1. 编译单元和包编译单元:即为最⼩的可以被编译且执⾏的Java⽂件。
⼀个.java⽂件就是⼀个编译单元,⼀个编译单元必须只包含有⼀个public类,可以包含有其他⾮public的类,并且⽤publi类标⽰的类名必须和⽂件名相同。
如果.java⽂件中不包含有publi类,则这个类也是没有意义的,因为不能被外界所访问。
.java⽂件中包含有⼏个类,编译后就会⽣成⼏个.class⽂件。
包含有⼀组类,是以⼀个名字空间集合在⼀起的类⽽已。
2. 访问控制修饰符public : 对所有类可见使⽤对象:类、接⼝、变量、⽅法protected : 对同⼀包内的类和所有⼦类可见使⽤对象:变量、⽅法。
注意:不能修饰类(外部类)default (即缺省,什么也不写): 在同⼀包内可见,不使⽤任何修饰符使⽤对象:类、接⼝、变量、⽅法。
private : 在本类中可见使⽤对象:变量、⽅法。
注意:不能修饰类(外部类)private和protected修饰符不能⽤以修饰类/接⼝2.1 公有访问修饰符-public被声明为 public 的类、⽅法、构造⽅法和接⼝能够被任何其他类访问。
如果⼏个相互访问的 public 类分布在不同的包中,则需要导⼊相应 public 类所在的包。
由于类的继承性,类所有的公有⽅法和变量都能被其⼦类继承。
java编程思想第四版习题答案【篇一:java编程思想第四版_读书笔记】面向对象程序设计(object-oriented programming oop),uml(unitied modelling language 统一建模语言)。
将对象想像成“服务提供者” ,它们看起来像什么?能够提供哪些服务?需要哪些对象?2.java中动态绑定是默认行为。
java采用动态内存分配方式,通过new操作在堆(heap)的内存池中动态创建对象。
java存储结构类型:1)寄存器2)堆栈,主要存储对象引用3)堆,主要用于存放所有的java对象4)常量存储,也就是程序代码区5)非ram存储,如流对象和持久化对象。
基本类型不用new来创建变量,而且这个变量直接存储”值”,并置于堆栈中。
3.biginteger和bigdecimal的使用。
当变量作为类的成员使用时当变量作为类的成员使用时,java才确保给定其默认初当变量作为类的成员使用时始值,但是在方法中定义的变量,它有可能是任意值。
面向对象的程序设计可以归纳为“向对象发送消息” 。
关键字static。
4.javadoc只能为public和protected成员进行文档注释,但是也可以通过-private进行标记注释。
javadoc常用方法: @see 引用其他类,link package.class#member label}, {@ {@docroot},{@inheritdoc},@version,@ author,@since,@param,@return,@throws,@deprecated。
5.整数除法会直接去掉结果的小数位。
基本类型的对象如果直接对它们赋值,对象指向同一个常量存储区,但是如果通过对象来初始化则会指向不同的堆的存储区。
如:string st1 = new string(a);string st2 = new string(a); st1==st2 false string st1 = a; string st2 = a; st1==st2 true6.逻辑操作符:与()、或(||)、非(!),其中与()、或(||)会产生短路现象。
基础知识部分:1. JDK是什么?JRE是什么?a) 答:JDK:java开发工具包。
JRE:java运行时环境。
2. 什么是java的平台无关性?a) 答:Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。
也就是一处编写,处处运行。
这就是java的跨平台性。
3. 在一台电脑上配置java环境,path起什么作用?如何配置?a) 答:path的作用是在DOS环境下,能在任意位置使用JDK目录中b in文件夹中的可执行程序,来编译执行java程序。
b) 在环境变量中找到path变量,把bin文件夹的绝对路径加上即可。
4. 什么样的标识符是合法的?a) 由字母、数字、_和$组成,长度不限。
其中字母可以是大写或小写的英文字母,数字为0到9。
b) 标识符的第一个字符不能是数字。
c) 标识符区分大小写。
d) 标识符不能包含空格。
5. Java有几种基本数据类型?a) byte,short,int,long,float,double,char,boolean6. 什么是隐式类型转换?什么是显示类型转换?a) 当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换。
b) 当把在级别高的变量的值赋给级别底变量时,必须使用显示类型转换运算。
7. &&和&区别,||和|区别?a) &&和||是短路与,短路或,当左边的表达式能判断当前结果,则不判断右边的表达式。
b) 而& 和|则将两边的表达式都运算完毕后,再算结果。
8. break,continue区别?a) break结束所有循环,continue结束当次循环,进入下次循环。
9. 类的命名规则是什么?a) 如果类名使用拉丁字母,那么名字的首写字母使用大写字母。
b) 类名最好见名知意,当类名由几个单词复合而成时,每个单词的首写字母使用大写。
10. 类体的内容由两部分构成,哪两部分?a) 一部分是变量的定义,用来刻画属性。
JAVA复习题及答案第一章JAV A概述1.JA VA中哪三种平台:J2ME(嵌入式平台),J2SE(标准平台),J2EE(企业级平台).2.JA VA从第几版称为JA V A2:JA V A 1.2版。
3.JA VA有否指针:无。
4.JA VA的API指的是什么:Application ProgrammingInterface,JA V A的类库。
5.JA V A平台无关性是如何实现的:通过编译生成与平台无关的代码──字节码,而不是通常的特定机器上的机器码,由平台上的Java虚拟机中的Java解释器解释执行。
6.JA VA有哪两种程序形式:Application和Applet程序。
7.Application程序运行时系统调用程序的哪个方法:main()方法。
Applet程序执行时系统自动调用程序的哪个方法:init()方法。
8.绘图程序中系统自动调用哪个方法:paint(Graphics g)方法。
9.JDK是什么:Java开发工具包(Java Development Kit )的缩写,包括JAVA类库、JAVA编译器、JAVA解释器、运行时环境、命令行工具。
10.有哪几种主要的可视化的集成源程序编辑环境:Eclipse,JCreator, JBuilder等。
11.安装JDK的可执行文件是:jdk-1_5_0-windows-i586.exe12.安装JDK帮助文档的是:jdk-1_5_0-doc.zip第二章JAV A语言基础13.保留字是什么意思,能否用于程序员定义自己的类、方法、变量等名字:JA V A中已定义的用于特定用途的标识符。
不能。
14.i++与++i有什么区别?15.写出各种转义字符?p17。
\t, \n, \r, \‖, \’, \\16.编程良好习惯中,对象名、包名、类名、变量名、常量名、接口名、方法名中的字符的大小写如何设置?Package –名词且小写;Class--名词且第一个字母大写;Interface—同Class;Methods-动词且第一个字母小写,分隔词第一个字母大写,不用‖-―;Variable—第一个字母小写,不用‖_‖,‖$‖(对于inner class有意义);Constants—大写并用‖_‖17.标识符的用途:用于给类、方法、变量、接口、程序块、对象等起名字。
类和对象.习题1、基本概念题:1.什么叫类?什么叫对象?类是相似对象中共同属性和方法的集合体。
对象是类的实例。
2.对象怎样得到内存空间的?垃圾对象怎样回收的?对象的内存空间是在用户需要时,用new运算符创建的。
对象也有作用范围,我们把超出作用范围的对象(或称不再被使用的对象)称作垃圾对象。
在Java中,收集和释放内存是一个叫做自动垃圾回收线程的责任。
自动垃圾回收线程在系统空闲时自动运行,这个线程监视用户程序中所有对象的有效作用范围,当某个对象超出其作用范围时,该线程就对这样的对象做上垃圾对象标识,并在适当的时候一次性回收这些垃圾对象。
3.什么叫引用类型?对象是引用类型吗?所谓引用类型,是指该类型的标识符表示的是一片内存连续地址的首地址。
对象和数组一样,也是引用类型。
即对象定义后,系统将给对象标识符分配一个内存单元,用于存放实际对象在内存中的存放位置。
4.类的修饰符共有几种?分别是什么?类声明的<修饰符>分为访问控制符和类型说明符两部分,分别用来说明该类的访问权限以及该类是否为抽象类或最终类。
访问控制符:private、public和protected类型说明符:abstract和final5.共有几种形式的变量?这些变量各自的用途是什么?变量可分为:static:指明该成员变量是一个类成员变量final:指明该成员变量是常量transient:指明该成员变量是临时变量。
transient很少使用。
6.成员变量和成员方法的修饰符共有几种?各自的访问权限是什么?有private、public和protected三种private:修饰符表示该成员变量只能被该类本身访问,任何其他类都不能访问该成员变量。
protected:修饰符表示该成员变量除可以被该类本身和同一个包的类访问外,还可以被它的子类(包括同一个包中的子类和不同包中的子类)访问。
public:修饰符表示该成员变量可以被所有类访问。
1、Java语言是以对象为中心,以消息为驱动的面向对象的编程语言。
2、Java语言与平台无关3、翻译:编译、解释(C、C++属于编译型语言,Java=编译+解释)4、面向对象是一种模拟人类社会和人解决实际问题的模型5、面向对象编程语言:Java,C++6、支持三个概念:抽象、多态、继承7、Java源文件是一个利用Java语言编写的文本文件,它可以用任何的文本编辑器进行编辑(可以是记事本、写字板、Wps、Word)8、代码说明:用“\\"开头,表示这两行是注释行9、Java源程序的文件名必须是公共类的类名,文件名的后缀必须是java。
Java文件名由实意文件名+后缀组成,后缀名因类型不同而不同。
10、一个Java源程序文件可以包含多个类,但是每个文件里最多只能包含一个公共类。
11、main成员方法是所有Java应用程序执行的入口,但不是Java 小程序的入口。
成员方法main必须同时含有public、static、void的属性。
在成员方法main中,args是参数变量,String[]是参数变量的数据类型,这个数据类型是不可以被修改的。
12、Main方法只能有一个。
一个文件中有4个类,通过编译产生4个class,有几个类就有几个class13、Java划分为J2EE(大容量)、J2SE(标准)、J2ME(小容量,如手机、微波炉)三个平台对外发布。
14、成功安装JDK之后,还需要设置其运行环境,其中包括path和classpath两个主要的环境变量。
15、Eclipse软件主要涉及Java两种应用程序的编辑、调试和运行。
1、Application2、一般存放在服务器上,按浏览器客户请求传送到客户机,又客户机浏览器来运行,即Java小应用程序Java Applet.16、在DOS环境(即在黑屏下运行)中需要使用appletviewer命令来启动Java小应用程序,而Eclipse软件的集成开发环境已经将appletviewer命令整合在它的功能菜单中.17、Java是面向对象的不是面向过程的。
华南农业大学期末考试试卷(卷)学年第学期考试科目:程序设计一、单项选择题(本大题共小题,每小题分,共分)1.下列关于语言的说法,不正确的是:. 是面向对象的高级语言. 是解释型语言,所以执行速度快. 一个类被编译成一个字节码文件. 程序可以做到“一次编写,随处运行”2.下列符合程序元素命名习惯的是。
. . . .3.下列不满足自动类型转换的赋值语句是。
.‘’;. ;.; . ;4.语句, ; ; 执行结束后,和的值分别是。
. ,. ,. ,. ,5.下列程序段的输出结果是。
, ;(“”);. . . . ;6.下列关于和这两种循环语句的说法,正确的是.二者都是后置检查循环条件.循环次数不确定使用语句比较好.循环条件是布尔型表达式.它们之间不能互相嵌套使用7.下列程序片段执行后,的值为, ; ( ){ : ; : ; : ;}. . . .8.定义二维数组,不正确的是. [][]; . [][]; . [] []; . [][] ;9.设[][] {{},{},{},{}},则. 数组一共有个元素. []为. 为. [][]等于10.下面一段代码的输出结果是{( [] ){[] {}; ()([]);}([] , , ){ []; [] []; [] ;}}. . . .11.关于字符串,下列语句不正确的是. (””);. “”(‘’);. “”; ();. (); (“”);12.关于类和对象,下列说法不正确的是。
. 类是对象的模板,对象是类的实例. 面向对象有四个基本特征:抽象、封装、继承和多态. 对象的引用变量只是存放了对象的地址. 静态成员方法可以调用实例成员方法13.关于类和成员的访问权限,下列说法正确的是. 类能继承类的前提是和必须在同一个包中. 子类不能继承位于不同包中的父类的成员. 子类不能继承位于同一包中的父类的成员. 子类可以继承位于不同包中的父类的无修饰成员14.下列关于继承的哪项叙述是正确. 在中允许多继承. 的单一继承使代码更可靠. 在中一个类不能同时继承一个类和实现一个接口. 在中一个类只能实现一个接口15.下列关于父类和子类构造方法,不正确的是. 子类不能继承父类的构造方法. 子类构造方法可以调用父类构造方法. 子类构造方法的第一条语句必须通过显式调用父类构造方法. 子类构造方法的第一条语句也可以通过调用本类的重载构造方法16.下列关于方法重载和覆盖的描述,不正确的是. 可通过返回值类型来区分是否为重载方法. 方法重载可减少记忆方法名称的难度,使程序清晰易读. 方法覆盖只能在有继承关系的父子类间. 方法覆盖必须保持父类方法的返回值、方法名和形参均不变17.下列不是实现多态必须条件的是. 继承. 方法重载. 方法覆盖. 父类引用变量可引用子类对象18.是中所有类的祖先类,其中用来比较两个对象内容是否相等的方法是. . .二、判断题(本大题共小题,每小题分,共分,正确选,错误选)19.()把源文件编译成字节码文件的命令是。
Java学习笔记10---访问权限修饰符如何控制成员变量、成员⽅法及类的访问范围1.Java有三种访问权限修饰符,分别为public、protected、private,还有⼀种为缺省权限修饰符的情况,记为default。
其中,可以由public 和default来修饰类;这四种修饰符都可以修饰成员变量和成员⽅法。
每⼀种修饰符对应不同的访问范围,下⾯以下图为例详细说明。
图1private只可以覆盖圆1,即只有本类可以访问;default可以覆盖到圆3,即本类、同包⼦类、同包其他类都可以访问,简单说就是与本类同包的所有类都可以访问;protected可以覆盖到圆4,即本类、同包⼦类、同包其他类、其他包中的⼦类都可以访问,简单说就是与本类同包的类及其他包中的⼦类都可以访问;public可以覆盖到圆5,即本类、同包⼦类、同包其他类、其他包⼦类、其他包其他类都可以访问,简单说就是所有类都可以访问;注:在与⽗类不同包的⼦类中,如果通过⼦类对象访问和调⽤⽗类中由protected修饰的变量和⽅法,确实可以;但如果通过⽗类的对象访问和调⽤的话,则不可以访问protected修饰的变量和⽅法,具体见下⽂的(6)和(7)。
具体原因还未了解。
2.下⾯以简单的程序验证上述结论。
前提:包human中定义了类Person,Student,DustMan;其中,Student是Person的⼦类,DustMan不是Person的⼦类。
包teacher中定义了类Teacher,GateMan;其中,Teacher是Person的⼦类,GateMan不是Person的⼦类。
Person中定义了四个成员变量和四个成员⽅法,分别以public,protected,缺省,private修饰,详见下⾯代码:String name;public String education;private String hobby;protected String residence;public void testModifierPublic() {System.out.println("Public");}protected void testModifierProtected() {System.out.println("Protected");}void testModifierDefault() {System.out.println("Default");}private void testModifierPrivate() {System.out.println("Private");}(1),在Person类中定义Person类对象pOwn,分别访问和调⽤这些成员变量和成员⽅法,详见下⾯的代码:public static void main(String[] args) {Person pOwn = new Person("xi",20,"female","bachelor","recite","NJ");System.out.println("public education: " + cation);System.out.println("protected residence: " + pOwn.residence);System.out.println("default name: " + );System.out.println("private hobby: "+ pOwn.hobby);pOwn.testModifierPublic();pOwn.testModifierProtected();pOwn.testModifierDefault();pOwn.testModifierPrivate();}输出结果为:public education: bachelorprotected residence: NJdefault name: xiprivate hobby: recitePublicProtected结果分析:Person类对象可以在本类中访问和调⽤由public、protected、default、private修饰的成员变量和成员⽅法。
Java复习1. Java中创建类的时候,不写类的修饰符默认是 default 权限,是可以在同包下相互访问的;如果是 public 类型,是允许跨包访问的;如果是 Private类型,仅允许在类内访问,连⼦类都访问不了protect: 介于public 和 private 之间的⼀种访问修饰符,⼀般称之为“保护形”。
被其修饰的类、属性以及⽅法只能被类本⾝的⽅法及⼦类访问,即使⼦类在不同的包中也可以访问2.同样,Java⽅法中默认的修饰符也是default ,默认什么都不加,就是default(不⽤把default写出来)。
意思就是只能由跟这个类在同⼀个包中的类来访问,⽐private限制更少,但⽐protected限制更多。
'3.记住静态⽅法和对象完全⽆关,所以静态⽅法不存在⽅法覆盖这么⼀说!!静态⽅法⼀般⽤类名来进⾏调⽤4.静态变量是属于类的,5.⾮静态⽅法既可以访问静态⽅法⼜可以访问⾮静态⽅法,⽽静态⽅法只能访问静态数据⽅法。
(这个要切记,在Java复习第⼀个笔记中就有这个记录,静态⽅法是不能访问⾮静态变量的,但是⾮静态变量是可以访问静态⽅法的)6.弄清⽅法覆盖和⽅法重载的区别⽅法覆盖必须发⽣在具有继承关系的⽗⼦关系中(重写后的⽅法必须的之前的⽅法具有相同的⽅法名,参数列表以及返回值!!)⽅法重载是在⼀个类中,⽅法名必须相同,但参数列表不⼀致7.弄清楚 super() 的作⽤,A类继承B类,B类有两个构造⽅法,⼀个有参,⼀个⽆参,A类在写构造⽅法的时候,第⼀⾏会默认加上 super() (你看不见。
),但是这个默认调⽤的是B类的⽆参构造,所以⽗类写构造⽅法的时候⼀定要注意8.Java⼀个类中只能有⼀个 public 类9.Java单引号表⽰字符,双引号才表⽰字符串10.final 修饰的类⽆法被继承,final 修饰的⽅法⽆法被重写11.注意,抽象类中的抽象⽅法是不可以写⽅法体的例如: public abstract void eat() ;12.抽象类中可以有抽象⽅法和⾮抽象⽅法⾮抽象类可以继承抽象⽅法,但是,但是,前提是必须实现(其实就是重写)抽象⽅法!!《别记混了》⾮静态⽅法既可以访问静态⽅法⼜可以访问⾮静态⽅法,⽽静态⽅法只能访问静态数据⽅法。