更新时间: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面试题库为您敞开大门,海量经典面试题题海等你来战!
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习