更新時間:2020-10-27 17:43:01 來源:動力節(jié)點 瀏覽1962次
面向?qū)ο笫且环N對現(xiàn)實世界理解和抽象的方法,Java面向?qū)ο笫荍ava基礎(chǔ)中的重要內(nèi)容,本文就為大家?guī)?道經(jīng)典Java面向?qū)ο笤囶}。
1、簡述面向?qū)ο蟮娜筇匦苑謩e是什么,以及主要功能:
三大特性:
1.多態(tài)
2.繼承
3.封裝
1.多態(tài)或者鴨子類型
是指不同的類調(diào)用相同的方法.
2.繼承
是指子類繼承父類的所有.
在python中分為單繼承和多繼承.
3.封裝
封裝包含給對象封裝屬性,和給一個類封裝靜態(tài)變量和方法以及私有成員
2、在類中使用classmethod裝飾的方法被存儲在哪塊內(nèi)存中,使用什么調(diào)用?參數(shù)有什么特點?
classmethod 是類方法,存儲在類的內(nèi)存當(dāng)中.通過類名加方法調(diào)用.參數(shù)傳入的是類.形參為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、斐波那契數(shù)列1, 2, 3, 5, 8, 13, 21.....根據(jù)這樣的規(guī)律,編程求出400萬以內(nèi)最大的斐波那契數(shù),并求出他是第幾個斐波那契數(shù)。
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)
結(jié)果如下:
31
3524578
5、定義一個學(xué)生類。有下面的類屬性:
1 姓名
2 年齡
3 成績(語文,數(shù)學(xué),英語)[每課成績的類型為整數(shù)]
類方法:
1 獲取學(xué)生的姓名:get_name() 返回類型:str
2 獲取學(xué)生的年齡:get_age() 返回類型:int
3 返回3門科目中最高的分?jǐn)?shù)。get_course() 返回類型:int
寫好類以后,可以定義2個同學(xué)測試下:
zm = Student('zhangming',20,[69,88,100])
返回結(jié)果:
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、簡述成員變量和局部變量的區(qū)別?
成員變量:作為類的成員直接存在類中,可以通過this引用
局部變量:在方法定義或聲明上
內(nèi)存位置不同:成員變量在堆,局部變量在棧
成員變量有默認(rèn)值初始化
局部變量沒有,必須定義賦值才能用
9、編寫Java應(yīng)用程序,該程序中有梯形類和主類。要求如下:
(1)梯形類具有屬性上底、下底、高和面積,具有返回面積的功能,在構(gòu)造方法中對上底、下底和高進行初始化。
(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());
}
}
以上就是為大家?guī)淼?道經(jīng)典Java面向?qū)ο笤囶},無論是在我們的學(xué)??荚嚮蛘咔舐毭嬖囍卸紩兴剂浚莆樟诉@些Java面向?qū)ο笤囶}等于快人一步,在面試過程中搶占先機。當(dāng)然只有這些資源是遠遠不夠的,本站的Java面試題庫為您敞開大門,海量經(jīng)典面試題題海等你來戰(zhàn)!