激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

計算機二級Java語(yǔ)言程序設計復習資料

時(shí)間:2025-01-22 16:30:35 詩(shī)琳 計算機等級 我要投稿
  • 相關(guān)推薦

計算機二級Java語(yǔ)言程序設計復習資料

  Java是一個(gè)面向對象的語(yǔ)言。對程序員來(lái)說(shuō),這意味著(zhù)要注意應中的數據和操縱數據的方法(method),而不是嚴格地用過(guò)程來(lái)思考。以下是關(guān)于計算機二級Java語(yǔ)言程序設計復習資料,希望大家認真閱讀!

計算機二級Java語(yǔ)言程序設計復習資料

  Java面向對象

  面向對象是一種程序設計方法,或者是程序設計規范,其基本思想是使用對象、類(lèi)、繼承、封裝、多態(tài)等基本概念來(lái)進(jìn)行程序設計。 面向對象是一種符合人們思考習慣的思想,可以將復雜的事情簡(jiǎn)單化,將程序員從執行者轉換成了指揮者

  完成需求時(shí):

  先要去找具有所需的功能的對象來(lái)用。

  如果該對象不存在,那么創(chuàng )建一個(gè)具有所需功能的對象。

  這樣簡(jiǎn)化開(kāi)發(fā)并提高代碼的復用。

  面向對象的開(kāi)發(fā)過(guò)程其實(shí)就是不斷的創(chuàng )建對象,使用對象,指揮對象做事情。設計的過(guò)程其實(shí)就是在管理和維護對象之間的關(guān)系。

  面向對象的特征:

  封裝(encapsulation)

  繼承(inheritance)

  多態(tài)(polymorphism)

  1.封裝

  概念:是指隱藏對象的屬性和實(shí)現細節,僅對外提供公共訪(fǎng)問(wèn)方式。

  好處: 將變化隔離。 便于使用。 提高重用性。 提高安全性。

  封裝原則:

  將不需要對外提供的內容都隱藏起來(lái)。

  把屬性都隱藏,提供公共方法對其訪(fǎng)問(wèn)。

  Java中可以通過(guò)對類(lèi)的成員設置一定的訪(fǎng)問(wèn)權限,實(shí)現類(lèi)中成員的信息隱藏。

  private:類(lèi)中限定為private的成員,只能被這個(gè)類(lèi)本身訪(fǎng)問(wèn)。如果一個(gè)類(lèi)的構造方法聲明為private,則其它類(lèi)不能生成該類(lèi)的一個(gè)實(shí)例。

  default:類(lèi)中不加任何訪(fǎng)問(wèn)權限限定的成員屬于缺省的(default)訪(fǎng)問(wèn)狀態(tài),可以被這個(gè)類(lèi)本身和同一個(gè)包中的類(lèi)所訪(fǎng)問(wèn)。

  protected:類(lèi)中限定為protected的成員,可以被這個(gè)類(lèi)本身、它的子類(lèi)(包括同一個(gè)包中以及不同包中的子類(lèi))和同一個(gè)包中的所有其他的類(lèi)訪(fǎng)問(wèn)。

  public:類(lèi)中限定為public的成員,可以被所有的類(lèi)訪(fǎng)問(wèn)。

  如下面的這個(gè)student類(lèi),就是使用了封裝,將類(lèi)中的屬性name 、age和score私有化,使外部不能直接訪(fǎng)問(wèn)他們,只能通過(guò)public類(lèi)型的對他們方法進(jìn)行操作。

  class Student {

  private String name;//聲明屬性 ,并設為私有類(lèi)型,起到封裝的作用

  private int age;

  private int score;

  public Student(String name,int age ,int score) { //構造函數,分別給name、age、score賦值

  this.name= name;// :this代本類(lèi)對象的引用

  this.age= age;

  this.score= score;

  }

  public String getName() { //設置getter方法,因為變量設為了私有,對象無(wú)法訪(fǎng)問(wèn)類(lèi)中的屬性,需要用getter方法獲取變量

  return name;

  }

  public void setName(String name) { //設置setter方法,因為變量設為了私有,對象無(wú)法訪(fǎng)問(wèn)類(lèi)中的屬性,需要用setter方法給變量賦值

  this.name = name;

  }

  public int getAge() {

  return age;

  }

  public void setAge(int age) {

  this.age = age;

  }

  public int getScorre() {

  return score;

  }

  public void setScorre(int score) {

  this.score = score;

  }

  }

  2.繼承

  繼承是一種聯(lián)結類(lèi)的層次模型,并且允許和鼓勵類(lèi)的重用,它提供了一種明確表述共性的方法。對象的一個(gè)新類(lèi)可以從現有的類(lèi)中派生,這個(gè)過(guò)程稱(chēng)為類(lèi)繼承。

  新類(lèi)繼承了原始類(lèi)的特性,新類(lèi)稱(chēng)為原始類(lèi)的派生類(lèi)(子類(lèi)),而原始類(lèi)稱(chēng)為新類(lèi)的基類(lèi)(父類(lèi))。派生類(lèi)可以從它的基類(lèi)那里繼承方法和實(shí)例變量,并且類(lèi)可以修改或增加新的方法使之更適合特殊的需要。

  子類(lèi)可以直接訪(fǎng)問(wèn)父類(lèi)中的非私有的屬性和行為。通過(guò) extends 關(guān)鍵字讓類(lèi)與類(lèi)之間產(chǎn)生繼承關(guān)系。如下:class SubDemo extends Demo{}

  繼承提高了代碼的復用性。

  繼承的出現讓類(lèi)與類(lèi)之間產(chǎn)生了關(guān)系,提供了多態(tài)的前提

  繼承的特點(diǎn):

  Java只支持單繼承,不支持多繼承。

  一個(gè)類(lèi)只能有一個(gè)父類(lèi),不可以有多個(gè)父類(lèi)。

  class SubDemo extends Demo{} //這是對的

  class SubDemo extends Demo1,Demo2...//這是錯的

  Java支持多層繼承(繼承體系)

  class A{}

  class B extends A{}

  class C extends B{}

  定義繼承需要注意:

  不要僅為了獲取其他類(lèi)中某個(gè)功能而去繼承

  類(lèi)與類(lèi)之間要有所屬關(guān)系,xx1是xx2的一種。

  如:

  class Ren { //父類(lèi)

  int age=20;

  String name="wk";

  Super.sho

  public void show() {

  System.out.println("姓名:"+name+" 年齡:"+age);

  }

  }

  class Sudents extends Ren {//子類(lèi)Sudents繼承了父類(lèi)Ren

  int score=90;//增加了新的屬性

  int age= super.age+1;//使用super標記父類(lèi)中的元素,修改了Ren中age的值

  public void show() {//重寫(xiě)了父類(lèi)中的方法( 覆蓋時(shí),子類(lèi)方法權限一定要大于等于父類(lèi)方法權限,靜態(tài)只能覆蓋靜態(tài)。)

  System.out.println("姓名:"+name+" 年齡:"+age+" 分數:"+ score);// Sudents繼承了Ren,所以Ren中的屬性name和age在Sudents可以直接使用

  }

  }

  public class Preson {

  public static void main(String[] args) {

  Ren ren = new Ren();//聲明一個(gè)Ren對象

  Sudents sudents = new Sudents();//聲明一個(gè)Sudents對象

  ren.show();

  sudents.show();

  }

  }

  程序運行結果是:

  super和this的用法相同:this代表本類(lèi)應用 ;super代表父類(lèi)引用 。當子父類(lèi)出現同名成員時(shí),可以用super進(jìn)行區分 ,子類(lèi)要調用父類(lèi)構造函數時(shí),可以使用super語(yǔ)句。

  在子類(lèi)覆蓋方法中,繼續使用被覆蓋的方法可以通過(guò)super.函數名獲取。

  注意:

  1. 子類(lèi)中所有的構造函數默認都會(huì )訪(fǎng)問(wèn)父類(lèi)中空參數的構造函數,因為每一個(gè)構造函數的第一行都有一條默認的語(yǔ)句 super();子類(lèi)會(huì )具備父類(lèi)中的數據,所以要先明確父類(lèi)是如何對這些數據初始化的。當父類(lèi)中沒(méi)有空參數的構造函數時(shí),子類(lèi)的構造函數 必須通過(guò)this或者super語(yǔ)句指定要訪(fǎng)問(wèn)的構造函數。

  2. 覆蓋時(shí),子類(lèi)方法權限一定要大于等于父類(lèi)方法權限

  靜態(tài)只能覆蓋靜態(tài)。

  父類(lèi)中的私有方法不可以被覆蓋。

  3.被final修飾的類(lèi)是一個(gè)最終類(lèi),不可以被繼承。

  被final修飾的方法是一個(gè)最終方法,不可以被覆蓋。

  被final修飾的變量是一個(gè)常量,只能賦值一次

  內部類(lèi)只能訪(fǎng)問(wèn)被final修飾的局部變量。

  4. 繼承與重載:一是子類(lèi)與父類(lèi)的關(guān)系,二是重載方法的調用問(wèn)題。

  3.多態(tài)

  方法的重寫(xiě)、重載與動(dòng)態(tài)連接構成多態(tài)性。Java只允許單繼承,這樣做雖然保證了繼承關(guān)系的簡(jiǎn)單明了,但是功能上有很大的限制,所以,Java引入了多態(tài)性的概念。此外,抽象類(lèi)和接口也是解決單繼承規定限制的重要手段。同時(shí),多態(tài)也是面向對象編程的精髓所在。

  多態(tài)性:發(fā)送消息給某個(gè)對象,讓該對象自行決定響應何種行為。

  通過(guò)將子類(lèi)對象引用賦值給超類(lèi)對象引用變量來(lái)實(shí)現動(dòng)態(tài)方法調用。

  java 的這種機制遵循一個(gè)原則:當超類(lèi)對象引用變量引用子類(lèi)對象時(shí),被引用對象的類(lèi)型而不是引用變量的類(lèi)型決定了調用誰(shuí)的成員方法,但是這個(gè)被調用的方法必須是在超類(lèi)中定義過(guò)的,也就是說(shuō)被子類(lèi)覆蓋的方法。

  1. 如果a是類(lèi)A的一個(gè)引用,那么,a可以指向類(lèi)A的一個(gè)實(shí)例,或者說(shuō)指向類(lèi)A的一個(gè)子類(lèi)。

  2. 如果a是接口A(yíng)的一個(gè)引用,那么,a必須指向實(shí)現了接口A(yíng)的一個(gè)類(lèi)的實(shí)例。

  要理解多態(tài)性,首先要知道什么是“向上轉型”。

  子類(lèi)Cat繼承了Animal類(lèi),那么后者就是前者是父類(lèi)。

  Cat c = new Cat();//實(shí)例化一個(gè)Cat的對象,

  Animal a = new Cat();//定義了一個(gè)Animal類(lèi)型的引用,指向新建的Cat類(lèi)型的對象

  由于Cat是繼承自它的父類(lèi)Animal,所以Animal類(lèi)型的引用是可以指向Cat類(lèi)型的對象的。那么這樣做的什么意義是:因為子類(lèi)是對父類(lèi)的一個(gè)改進(jìn)和擴充,所以一般子類(lèi)在功能上較父類(lèi)更強大,屬性較父類(lèi)更獨特,

  定義一個(gè)父類(lèi)類(lèi)型的引用指向一個(gè)子類(lèi)的對象既可以使用子類(lèi)強大的功能,又可以抽取父類(lèi)的共性。

  所以,父類(lèi)類(lèi)型的引用可以調用父類(lèi)中定義的所有屬性和方法,但是對于子類(lèi)中定義而父類(lèi)中沒(méi)有的方法,它是無(wú)可奈何的;

  同時(shí),父類(lèi)中的一個(gè)方法只有在在父類(lèi)中定義而在子類(lèi)中沒(méi)有重寫(xiě)的情況下,才可以被父類(lèi)類(lèi)型的引用調用;

  對于父類(lèi)中定義的方法,如果子類(lèi)中重寫(xiě)了該方法,那么父類(lèi)類(lèi)型的引用將會(huì )調用子類(lèi)中的這個(gè)方法,這就是動(dòng)態(tài)連接。

  如這段程序:

  class Father{

  public void func1(){

  func2();

  }

  public void func2(){//這是父類(lèi)中的func2()方法,因為下面的子類(lèi)中重寫(xiě)了該方法

  //所以在父類(lèi)類(lèi)型的引用中調用時(shí),這個(gè)方法將不再有效

  //取而代之的是將調用子類(lèi)中重寫(xiě)的func2()方法

  System.out.println("AAA");

  }

  }

  class Child extends Father{

  //func1(int i)是對func1()方法的一個(gè)重載

  //由于在父類(lèi)中沒(méi)有定義這個(gè)方法,所以它不能被父類(lèi)類(lèi)型的引用調用

  //所以在下面的main方法中child.func1(68)是不對的

  public void func1(int i){

  System.out.println("BBB");

  }

  //func2()重寫(xiě)了父類(lèi)Father中的func2()方法

  //如果父類(lèi)類(lèi)型的引用中調用了func2()方法,那么必然是子類(lèi)中重寫(xiě)的這個(gè)方法

  public void func2(){

  System.out.println("CCC");

  }

  }

  public class PolymorphismTest {

  public static void main(String[] args) {

  Father child = new Child();

  child.func1();//打印結果將會(huì )是什么?

  }

  }

  這是個(gè)很典型的多態(tài)的例子。子類(lèi)Child繼承了父類(lèi)Father,并重載了父類(lèi)的func1()方法,重寫(xiě)了父類(lèi)的func2()方法。重載后的func1(int i)和func1()不再是同一個(gè)方法,由于父類(lèi)中沒(méi)有func1(int i),那么,父類(lèi)類(lèi)型的引用child就不能調用func1(int i)方法。而子類(lèi)重寫(xiě)了func2()方法,那么父類(lèi)類(lèi)型的引用child在調用該方法時(shí)將會(huì )調用子類(lèi)中重寫(xiě)的func2()。

  所以程序運行結果應該是“CCC”。

  實(shí)現多態(tài),有二種方式,覆蓋(override),重載(overload)。

  覆蓋,是指子類(lèi)重新定義父類(lèi)的虛函數的做法。它是覆蓋了一個(gè)方法并且對其重寫(xiě),以求達到不同的作用。在覆蓋要注意以下的幾點(diǎn):

  1、覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;

  2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;

  3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類(lèi);

  4、被覆蓋的方法不能為private,否則在其子類(lèi)中只是新定義了一個(gè)方法,并沒(méi)有對其進(jìn)行覆蓋。

  重載,是指允許存在多個(gè)同名函數,而這些函數的參數表不同(或許參數個(gè)數不同,或許參數類(lèi)型不同,或許兩者都不同)。它是指我們可以定義一些名稱(chēng)相同的方法,通過(guò)定義不同的輸入參數來(lái)區分這些方法,然后再調用時(shí),在使用重載要注意以下的幾點(diǎn):

  1、在使用重載時(shí)只能通過(guò)不同的參數樣式。例如,不同的參數類(lèi)型,不同的參數個(gè)數,不同的參數順序(當然,同一方法內的幾個(gè)參數類(lèi)型必須不一樣,例如可以是fun(int,float),但是不能為fun(int,int));

  2、不能通過(guò)訪(fǎng)問(wèn)權限、返回類(lèi)型、拋出的異常進(jìn)行重載;

  3、方法的異常類(lèi)型和數目不會(huì )對重載造成影響;

  4、對于繼承來(lái)說(shuō),如果某一方法在父類(lèi)中是訪(fǎng)問(wèn)權限是priavte,那么就不能在子類(lèi)對其進(jìn)行重載,如果定義的話(huà),也只是定義了一個(gè)新方法,而不會(huì )達到重載的效果。

  java語(yǔ)言類(lèi)的嵌入

  (1) 類(lèi)可以嵌入另一個(gè)類(lèi)中,但不能嵌入接口中。

  (2) 在靜態(tài)方法或其他方法中,不能直接創(chuàng )建內部類(lèi)對象,需通過(guò)手段來(lái)取得。

  手段有兩種:

  class A {

  class B {}

  B getB() {

  B b = new B();

  return b;

  }

  }

  static void m() {

  A a = new A();

  A.B ab = a.getB(); // 或者是 A.B ab = a.new B();

  }

  (3) 一個(gè)類(lèi)繼承了另一個(gè)類(lèi)的內部類(lèi),因為超類(lèi)是內部類(lèi),而內部類(lèi)的構造方法不能自動(dòng)

  被調用,這樣就需要在子類(lèi)的構造方法中明確的調用超類(lèi)的構造方法。

  接上例:

  class C extends A.B {

  C() {

  new A().super(); // 這一句就實(shí)現了對內部類(lèi)構造方法的調用。

  }

  }

  構造方法也可這樣寫(xiě):

  C(A a) {

  a.super();

  } // 使用這個(gè)構造方法創(chuàng )建對象,要寫(xiě)成C c = new C(a); a是A的對象。

【計算機二級Java語(yǔ)言程序設計復習資料】相關(guān)文章:

計算機二級Java語(yǔ)言程序設計試題11-01

計算機二級《Java語(yǔ)言程序設計》考試大綱11-11

計算機二級Java語(yǔ)言程序設計考試試題11-15

計算機二級Java語(yǔ)言程序設計考試重要考點(diǎn)09-24

2017計算機二級Java語(yǔ)言程序設計考試試題08-30

計算機二級Java語(yǔ)言程序設計考試試題及答案10-01

計算機二級Java語(yǔ)言程序設計考試常見(jiàn)知識點(diǎn)07-19

全國計算機二級Java語(yǔ)言程序設計考試試題07-06

計算機二級C語(yǔ)言復習資料10-17

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频