更新時間:2020-10-27 17:43:01 來源:動力節點 瀏覽1718次
面向對象是一種對現實世界理解和抽象的方法,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天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習