面向对象基础部分

面向对象基础部分
面向对象基础部分

·类与对象

比如人:张三、李四、王二麻子,实实在在存在的,看得见摸得着。

比如人类:抽象的,概念上的共性的。

对象:实际存在的,是该类事物的每个个体,也称为类的实例,是个性类:规定的一个共性的东西,是抽象的,概念上的。是共性的

翁家龙:个性的,具体的,需要依靠类

开发中重点放在类上面,因为类设计好了就等于设计好了千千万万个对象是先有对象还是先有类:先有类再有对象。

结论:类的格式:

classs 类名称{

属性;

方法;

}

对象的引用传递:

面向对象的特征:

·继承

·封装

·多态

封装:使用private实现类的封装,使用private修饰的属性不能被外部访问,private修饰的方法也不能被外部访问。

现在类中的属性和方法都被封装了,外部不能访问了,那么为什么需要封装呢?

从以上的代码中可以发现,封装的好处在于:·安全性

·可以进行校验

匿名对象:没有名字,只使用一次的对象

构造方法:用于构造对象的方法

构造方法的两个特点:

·无任何返回值类型

·方法名称必须与类重名

通过以上程序发现,对象实例化的时候都会去调用类的构造方法,如果类中没有写任何的构造方法,那么会默认的去调用一个什么都不做的构造方法。

方法的重载:在一个类中,方法名称相同,参数的个数、类型、顺序不同,实现不同的功能。

通过以上的程序发现,构造方法能够重载,普通方法也能够重载。

this关键字的使用:

·this关键字可以调用当前类的属性

·this关键字可以调用当前类的方法

·this关键字可以调用当前类的构造方法

·this关键字可以表示当前对象

范例:使用this关键字调用当前类的构造方法

this关键字在调用当前类的构造方法的时候必须放在构造方法的首行。

this表示当前对象一般用于对象比较。

static关键字的用法:

static变量的声明和使用

static方法的声明和使用

static代码块的使用

static变量的声明和使用。

圣旨:static声明的变量可以被static声明的方法可以调用,但是非static变量不能被static 方法调用

static方法的声明和使用。

圣旨:static声明的方法可以调用static声明的方法,但是非static声明的方法不能被static 声明的方法调用。

全局代码区:使用static修饰的方法

全局数据区:使用static修饰的变量

之前我们去调用属性和方法的时候:对象.属性,对象.方法()

代码块:使用一对{}包围起来的代码就是代码块

·普通的代码块:写在普通方法中的代码

·构造块(实例块):直接写在一个类中的语句,使用{}包围,在实例化对象的时候构造块优先于构造方法执行,在实例化多个对象的时候执行多次

·静态块:直接写在类中,使用一对{}包围,只是用static声明,在实例化对象优先于构造块执行,在实例化多个对象的时候静态块只执行一次

·同步块:不讲(讲到多线程的时候再说)

main方法是java程序运行的入口

public :此方法是公有的方法,可以被外部程序直接访问

static:此方法是静态的方法可以通过类名直接访问

void:表示此方法无返回值

main:方法的名称

方法:一段可以重复调用的代码称之为方法

方法的定义:public|private|protected|default (static|native|synchro。。)返回值类型方法名称(参数1,参数2.。。。) throws Exception{

方法体

}

方法的调用:

·对象.方法()用于非静态方法

·类名.方法名() 静态方法的调用

形式参数:形参

实际参数:实参

练习:用数组存储对象,进行对象数组的查找。

答:

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

面向对象基础_参考题答案

一、【必做题】 1.(1)定义一个人类Person: 1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 (2)定义一个PersonCreate类: 1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74 2)分别调用对象的sayHello()方法。(答案:Person.java、PersonCreate.java)2.(1)定义一个人类Person: 1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX” 2)有三个属性:名字、身高、体重 3)通过构造方法,分别给三个属性赋值 (2)定义一个Constructor类: 1)创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74 2)分别调用对象的sayHello()方法。(答案:Constructor.java、或者是Person3.java)3.(1)定义一个矩形类Rectangle: 1)定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。 2)有2个属性:长length、宽width 3)通过构造方法Rectangle(int width, int length),分别给两个属性赋值(答案:Rectangle.java) 4.定义一个点类Point,包含2个成员变量x、y分别表示x和y坐标,2个构造器Point()和Point(int x0,y0),以及一个movePoint(int dx,int dy)方法实现点的位置移动。() public class Point { private int x0; private int y0; public Point() { } public Point(int x0,int y0) { t his.x0=x0; this.y0=y0; } public void movePoint(int dx,int dy){ t his.x0 = this.x0 + dx; t his.y0 = this.y0 + dy; } } 5.编写一个程序,创建两个Point对象p1、p2,分别调研movePoint方法后,打印p1和p2的坐标。 public class Point { private int x0; private int y0; public Point()

第三章 面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过(B)实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述(A) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰(D) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有(B)属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A)实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于java.util.*包的是(D) A) Collection B)Vector C) MapD) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法?(A) A) int addValue( int a, int b ){return a+b;}

面向对象基础_参考答案

一、【必做题】 Ⅰ.选择题 1、列选项中哪个是类public class T est { }的默认构造方法__C__? A. T est(); B. T est(void); C. public T est(); D. public T est(void); E. public void T est(); 2、给定下列代码的执行结果是_E___? public class A { void A() { System.out.println(“Class A”); } public static void main(String[] args) { new A(); } } A. Class A B. 在第2行处抛出异常 C. 编译错误 D. 在第6行处抛出异常 E. 代码执行后没有输出 ***3、给定以下代码: 1. public class ConstOver { 2. public ConstOver (int x, int y, int z) { 3. } 4. } 下列选项中,哪些可以在ConsOver类中定义成重载的构造方法___AC_: A. ConstOver ( ) { } B. int ConstOver ( ) { } C. ConstOver (int z, int y, byte x) { } D. Object ConstOver (int x, int y, int z) { } E. void ConstOver (byte x, byte y, byte z) { } 4、以下代码的执行结果是__A___?//Illegal modifier for parameter i; only final is permitted

第3章-面向对象(上)-补充案例

第三章补充案例 案例3-1 定义学生类 一、案例描述 1、考核知识点 编号:2 名称:类和对象 2、练习目标 ?掌握类定义的方式 ?掌握如何在类中定义成员变量和成员方法 3、需求分析 在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。 4、设计思路(实现原理) 1)使用class关键字定义一个表示学生类型的类,类名为Student。 2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。其中,name的数据类型为String,变量age的数据类型为int。 3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。 二、案例实现 class Student{ String name; int age; void speak() { System.out.println("我的名字是 "+name+",今年 "+age+"岁"); } } 三、案例总结 1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字 2、在Student类中,成员变量name是String类型,String表示一个字符串,后面的章节会详细讲解 3、思考一下:自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打电话的call()方法,代码如下所示 public class Phone {

面向对象基础部分

·类与对象 比如人:张三、李四、王二麻子,实实在在存在的,看得见摸得着。 比如人类:抽象的,概念上的共性的。 对象:实际存在的,是该类事物的每个个体,也称为类的实例,是个性类:规定的一个共性的东西,是抽象的,概念上的。是共性的 翁家龙:个性的,具体的,需要依靠类 开发中重点放在类上面,因为类设计好了就等于设计好了千千万万个对象是先有对象还是先有类:先有类再有对象。 结论:类的格式: classs 类名称{ 属性; 方法; }

对象的引用传递: 面向对象的特征: ·继承 ·封装 ·多态 封装:使用private实现类的封装,使用private修饰的属性不能被外部访问,private修饰的方法也不能被外部访问。 现在类中的属性和方法都被封装了,外部不能访问了,那么为什么需要封装呢?

从以上的代码中可以发现,封装的好处在于:·安全性 ·可以进行校验 匿名对象:没有名字,只使用一次的对象 构造方法:用于构造对象的方法 构造方法的两个特点: ·无任何返回值类型 ·方法名称必须与类重名

通过以上程序发现,对象实例化的时候都会去调用类的构造方法,如果类中没有写任何的构造方法,那么会默认的去调用一个什么都不做的构造方法。

方法的重载:在一个类中,方法名称相同,参数的个数、类型、顺序不同,实现不同的功能。

通过以上的程序发现,构造方法能够重载,普通方法也能够重载。 this关键字的使用: ·this关键字可以调用当前类的属性 ·this关键字可以调用当前类的方法 ·this关键字可以调用当前类的构造方法 ·this关键字可以表示当前对象 范例:使用this关键字调用当前类的构造方法

面向对象基础练习

1 定义员工类 /* 需求: 定义一个员工类,自己分析出几个成员, 然后给出成员变量,构造方法,getXxx()/setXxx()方法, 以及一个显示所有成员信息的方法。并测试。 分析: 员工 成员变量: 员工编号,姓名,年龄 构造方法: 无参构造方法 成员方法: getXxx()/setXxx() show(); */ class Employee { //员工编号 private String employeeId; //姓名 private String name; //年龄 private int age; //构造方法

public Employee() {} //getXxx()/setXxx() public String getEmployeeId() { return employeeId; } public void setEmployeeId(String employeeId) { this.employeeId = employeeId; } public String getName() { return name; } public void setName(String name) { https://www.360docs.net/doc/2716524054.html, = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } //显示所有成员信息的方法 public void show() {

System.out.println("员工编号是:"+employeeId+"的这个人是: "+name+"的年龄是:"+age); } } class EmployeeTest { public static void main(String[] args) { //创建对象 Employee e = new Employee(); //给成员变量赋值 e.setEmployeeId("czbk9527"); e.setName("唐伯虎"); e.setAge(18); //获取数据 //System.out.println(e.getEmployeeId()+"---"+e.getName()+"--- "+e.getAge()); //我们在Employee类中定义了一个show方法。所以,我们改进一下,使用show方法 e.show(); } } 2 定义MYMATH /* 定义一个类MyMath,提供基本的加减乘除功能,然后进行测试。 */ import java.util.Scanner;

面向对象的三个基本特征和概念

面向对象的三个基本特征(讲解) 面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。 抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、 str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

第三章 面向对象程序设计答案

学号: 姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A与类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定就是抽象类。对 7、方法中的形参可以与方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的就是( A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性就是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个就是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性就是通过( A )实现的 A) 访问控制B) 设计内部类 C) 静态域与静态方法D) 包 7、下列接口或类不属于java、util、*包的就是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,就是一个类中方法重载的正确写法?( A ) A) int addValue( int a, int b ){return a+b;} float addValue ( float a, float b) {return a+b;} B) int addValue (int a, int b ){value=a+b; }

第3章 面向对象程序设计基础 答案

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? [解答]:Java程序的基本单位是类。对象是对事物的抽象,而类是对对象的抽象和归纳,找出事物的共性,把具有共同性质的事物归结为一类。累是具有相同属性和方法的一组对象的集合,类是在对象之上的抽象,对象是类的实例化,类定义一种对象能够拥有的数据和能完成的操作。一旦建立类后,就可用它来建立许多你需要的对象。 Java的类库是系统提供的已实现的标准类的集合,是Java编程的API,它可以帮助开发者方便、快捷的开发Java程序。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? [解答]:方法的定义由两部分组成:方法声明和方法体。方法声明的基本格式如下: 返回类型方法名(形式参数) { …//方法体内容 } 方法声明包括方法名、返回类型和形式参数,方法的小括号是方法的标志;方法体为实现方法行为的Java语句。 在面向对象程序设计中,方法所起的作用是完成类和对象的属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) { studentNo=no; studentName=name; return no; } [解答]:构造方法是一个特殊的方法,主要用于初始化新创建的对象。构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,构造方法不返回任何数据类型,也不返回void数据类型,即不能在构造方法前加void。 上面的代码出错处:(1)构造方法student前不能加void.(2)不能用return语句。【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 [解答]:class student{ private String id; private String name; private String sex; private int age; public String getId() {return id; } public String getName()

2_面向对象基础测试题和答案教学文稿

共40道选择题,每题2.5分。多选题有错则全错,全对才满分. 面向对象部分测试题 1.下面描述函数重写错误的是C A. 要有子类继承或实现 B. 子类方法的权限必须大于等于父类的权限 C. 父类中被private权限修饰的方法可以被子类重写 D. 子类重写接口中的抽象方法,子类的方法权限必须是public的 2.关于封装下面介绍错误的是(D )。 A. 封装将变化隔离 B. 封装提高重用性。 C. 封装安全性 D. 只有被private修饰才叫做封装 3.试图编译运行下面的代码会发生什么情况D public class MyClass{ static int i; public static void main(String[] args){ System.out.println(i); } } A. 错误,变量i没有被初始化 B. 输出null C. 输出1 D. 输出0 4.在Java中,下面对于构造函数的描述正确的是(D)。 A. 类必须显式定义构造函数 B. 构造函数的返回类型是void C. 构造函数和类有相同的名称,并且不能带任何参数

D. 一个类可以定义多个构造函数 5.下面Java代码的运行结果是(C )。 class Penguin { private String name=null; // 名字 private int health=0; // 健康值 private String sex=null; // 性别 public void Penguin() { //是一般方法,不是构造方法health = 10; sex = "雄"; System.out.println("执行构造方法。"); } public void print() { System.out.println("企鹅的名字是" + name + ",健康值是" + health + ",性别是" + sex+ "。"); } public static void main(String[] args) { Penguin pgn = new Penguin(); pgn.print(); } } A. 企鹅的名字是null,健康值是10,性别是雄。 B. 执行构造方法。 企鹅的名字是null,健康值是0,性别是null。 C. 企鹅的名字是null,健康值是0,性别是null。 D. 执行构造方法。 企鹅的名字是null,健康值是10,性别是雄。 6.class A { public int i = 10; }

第三章面向对象程序的设计(答案)

学号:: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过(B)实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述(A) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰(D) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有(B)属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A)实现的 A) 访问控制B) 设计部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于java.util.*包的是(D) A) Collection B)Vector C) MapD) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法?(A) A) int addValue( int a, int b ){return a+b;}

面向对象基础

第13章三层架构程序设计实例 13.1 面向对象的程序设计方法 所谓面向对象的程序设计是指将所有问题都看成“对象”,每个对象根据其性质不同又归属于不同的“类”。在程序设计时开发人员可通过“事件驱动机制”调用对象的“属性”、“方法”和“事件”来实现设计目标。 13.1.1 类和对象的概念 现实生活中的类是人们对客观对象不断认识而产生的抽象的概念,而对象则是现实生活中的一个个实体。例如,人们在现实生活中接触了大量的汽车、摩托车、自行车等实体,从而产生了交通工具的概念,交通工具就是一个类,而现实生活中的具体的汽车、摩托车、自行车等,则是该类的对象。 面向对象程序设计的类概念从本质上和人们现实生活中的类概念是相同的。例如在编程实践中,人们经常使用按钮(Button)控件,每一个具体的按钮是一个按钮对象,而按钮类则是按钮对象的抽象,并且人们把这一抽象用计算机编程语言表示为数据集合与方法集合的统一体,然后再用这个类创建一个个具体的按钮对象。 可以把类比作一种蓝图,而对象则是根据蓝图所创建的实例,可以把类比作生产模具,而对象则是由这种模具产生的产品(实例)。所以人们又把对象叫做类的实例。类是对事物的定义,而对象则是该事物本身。 在Visual Studio集成开发环境的工具箱中,所有的控件都是被图形文字化的,可视的类,而把这些控件添加到窗体设计器中后,窗体设计器中的控件则是对象,即由工具箱中的类创 建的对象。在C#中,类以图标表示,普通对象以图标表示。 类是一种数据类型,这种数据类型将数据与对数据的操作作为一个统一的整体来定义,类的这种特点叫封装性。在C#中,类这种数据类型可以分为两种:一种是由系统提供的预先定义的,这些类在.NET框架类库中;一种是用户定义数据类型。在创建对象之前必须先定义该对象所属的类。然后由类声明对象。 对象通过类进行声明,由于类本质上是一种数据类型,所以用类声明对象的方法与用基本数据类型声明变量的方法基本相同。事实上,在Visual Studio中像int、float等基本数据类型也是特殊的类。那么,用基本数据类型可以声明变量,用类也可以声明变量,只不过用类声明的变量叫类的对象或类的实例。用同一个类可以声明无数个该类的对象,这些对象具有相同的数据,相同的数据操作方法,所不同的仅仅是数据的具体值。正如只要是人,就具有人所具备的共同特点,如身高、体型等,不同的仅仅是高矮胖瘦等个体数据而已。

2-面向对象基础测试题和答案

2-面向对象基础测试题和答案

共40道选择题,每题2.5分。多选题有错则全错,全对才满分. 面向对象部分测试题 1.下面描述函数重写错误的是C A. 要有子类继承或实现 B. 子类方法的权限必须大于等于父类的权限 C. 父类中被private权限修饰的方法可以被子类重写 D. 子类重写接口中的抽象方法,子类的方法权限必须是public的 2.关于封装下面介绍错误的是(D )。 A. 封装将变化隔离 B. 封装提高重用性。 C. 封装安全性 D. 只有被private修饰才叫做封装 3.试图编译运行下面的代码会发生什么情况D public class MyClass{ static int i;

private int health=0; // 健康值private String sex=null; // 性别public void Penguin() { //是一般方法,不是构造方法 health = 10; sex = "雄"; System.out.println("执行构造方法。"); } public void print() { System.out.println("企鹅的名字是" + name + ",健康值是" + health + ",性别是" + sex+ "。"); }

public static void main(String[] args) { Penguin pgn = new Penguin(); pgn.print(); } } A. 企鹅的名字是null,健康值是10,性别是雄。 B. 执行构造方法。 企鹅的名字是null,健康值是0,性别是null。 C. 企鹅的名字是null,健康值是0,性别是null。 D. 执行构造方法。 企鹅的名字是null,健康值是10,性别是雄。 4.c lass A { public int i = 10; } class B extends A{

面向对象基础

面向对象 利用java语言进行问题求解的基本思想是分析需要求解的问题,从中提取需要设计的对象,然后编写这些对象所对应的类,最后通过集成这些对象的功能解决需要求解的问题。这就是面向对象程序设计的基本思想。在这个过程中,可以对这些类型进行归类,找出可以归类的类型,形成对应的接口或者抽象类,让这些类成为所定义的接口或抽象类的子类型。 几个基础算法 选择: 冒泡: 二分:

翻转: 代码块 局部代码块 在程序执行中顺序不变,只是在执行完成后变量data消失。减少变量的生命周期 构造代码块 构造函数:构造函数的作用是给对应的对象进行初始化。 构造代码块:构造代码块的作用是给所有的对象进行统一初始化,将所有构造方法中公共的信息进行抽取。如果有多个构造方法,可以把通用的步骤写在构造代码块里。 构造代码块的实现方式: { 构造代码块 } 构造代码块比构造函数先执行 构造代码块要注意细节: 1. 构造函数的代码是位于成员变量的显式初始化、构造代码块之后执行的。(不管构造函数代码的位置如何摆放) 2 . 成员变量的定义语句经过java编译器编译之后,声明变量的语句会被提前。 3. 其实构造代码块的代码是在构造函数里面执行的。(重点) 4. 构造代码块的代码与成员变量的显式初始化动作的先后顺序是根据当前的代码顺序而决定的。 javap -c -l -private

静态代码块 静态代码块: 静态代码块的代码是在class文件加载的时候调用的,由于只加载一次,所以就算创建多个对象也只调用一次。优先于main函数执行 访问权限 访问权限类包子类其他包 public ∨∨∨∨ protect ∨∨∨× default ∨∨×× private ∨××× 注意:在不同包中只有public、protected两个访问权限修饰符修饰的内容才可以访问,而且protected必须要在继承关系下才可以访问。 重写与重载 重载:在同一个类中,有一个以上函数的名字相同,只要函数的参数列表或参数类型不一样

相关文档
最新文档