9道经典Java面向对象试题 - 极悦
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 9道经典Java面向对象试题

9道经典Java面向对象试题

更新时间:2020-10-27 17:43:01 来源:极悦 浏览1537次

面向对象是一种对现实世界理解和抽象的方法,Java面向对象是Java基础中的重要内容,本文就为大家带来9道经典Java面向对象试题


1、简述面向对象的三大特性分别是什么,以及主要功能:

三大特性:

1.多态

2.继承

3.封装

1.多态或者鸭子类型

是指不同的类调用相同的方法.

2.继承

是指子类继承父类的所有.

在python中分为单继承和多继承.

3.封装

封装包含给对象封装属性,和给一个类封装静态变量和方法以及私有成员


2、在类中使用classmethod装饰的方法被存储在哪块内存中,使用什么调用?参数有什么特点?

classmethod 是类方法,存储在类的内存当中.通过类名加方法调用.参数传入的是类.形参为clsass


3、写一个单例模式

class A:

__instance = None

def __new__(cls, *args, **kwargs):

if A.__instance is None:

A.__instance = object.__new__(cls)

return A.__instance


4、斐波那契数列1, 2, 3, 5, 8, 13, 21.....根据这样的规律,编程求出400万以内最大的斐波那契数,并求出他是第几个斐波那契数。

count = 0

def fun(n,m):

global count

if m > 4000000:

print(count)

print(n)

return

x = n + m

count += 1

fun(m,x)

fun(1,2)

结果如下:

31

3524578


5、定义一个学生类。有下面的类属性:

1 姓名

2 年龄

3 成绩(语文,数学,英语)[每课成绩的类型为整数]

类方法:

1 获取学生的姓名:get_name() 返回类型:str

2 获取学生的年龄:get_age() 返回类型:int

3 返回3门科目中最高的分数。get_course() 返回类型:int

写好类以后,可以定义2个同学测试下:

zm = Student('zhangming',20,[69,88,100])

返回结果:

zhangming

20

100

class Student:

def __init__(self,*args):

self.__name = args[0]

self.__age = args[1]

self.__score = args[2]

def get_name(self):

return self.__name

def get_age(self):

return self.__age

def get_course(self):

return max(self.__score)

zm = Student("leon",20,[90,88,70])

print(getattr(zm,"get_name")())

print(getattr(zm,"get_age")())

print(getattr(zm,"get_course")())


6、自定义一个类,并实例化。使用反射给对象添加一个属性name,值为你的名字。使用反射查看name的值。

class A:

def __init__(self,*args):

self.age = args[0]

ob1 = A(18)

setattr(ob1,"name","leon")

print(getattr(ob1,"name"))


7、简述反射是怎么回事?

反射:通过 字符串 操作一个空间 (对象).

总共有四个方法:

1.getattr()

2.hasattr()

3.setattr()

4.delattr()


8、简述成员变量和局部变量的区别?

成员变量:作为类的成员直接存在类中,可以通过this引用

局部变量:在方法定义或声明上

内存位置不同:成员变量在堆,局部变量在栈

成员变量有默认值初始化

局部变量没有,必须定义赋值才能用


9、编写Java应用程序,该程序中有梯形类和主类。要求如下:

(1)梯形类具有属性上底、下底、高和面积,具有返回面积的功能,在构造方法中对上底、下底和高进行初始化。

(2)主类用来测试梯形类的功能。

public class Ladder {

double upper;

double bottom;

double height;

double area;

public Ladder(double upper, double bottom, double height) {

super();

this.upper = upper;

this.bottom = bottom;

this.height = height;

}

//返回面积

public double getArea(){

area=(upper+bottom)*height/2;

return area;

}

}

测试类:

public class Zhu {

public static void main(String[] args) {

Ladder lad=new Ladder(2, 5, 9);

System.out.println("梯形的面积为:"+lad.getArea());

}

}


以上就是为大家带来的9道经典Java面向对象试题,无论是在我们的学校考试或者求职面试中都会有所考量,掌握了这些Java面向对象试题等于快人一步,在面试过程中抢占先机。当然只有这些资源是远远不够的,本站的Java面试题库为您敞开大门,海量经典面试题题海等你来战!


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>