Java(5)_ 內部類&API(
阿新 • • 發佈:2021-10-13
1.引數傳遞
1.1 類名作為形參和返回值(應用)
- 1、類名作為方法的形參
方法的形參是類名,其實需要的是該類的物件
實際傳遞的是該物件的【地址值】 - 2、類名作為方法的返回值
方法的返回值是類名,其實返回的是該類的物件
實際傳遞的,也是該物件的【地址值】 - 示例程式碼
class Cat { public void eat() { System.out.println("貓吃魚"); } } class CatOperator { public void useCat(Cat c) { //Cat c = new Cat(); c.eat(); } public Cat getCat() { Cat c = new Cat(); return c; } } public class CatDemo { public static void main(String[] args) { //建立操作類物件,並呼叫方法 CatOperator co = new CatOperator(); Cat c = new Cat(); co.useCat(c); Cat c2 = co.getCat(); //new Cat() c2.eat(); } }
1.2 抽象類作為形參和返回值(理解)
- 抽象類作為形參和返回值
- 方法的形參是抽象類名,其實需要的是該抽象類的子類物件
- 方法的返回值是抽象類名,其實返回的是該抽象類的子類物件
- 示例程式碼:
abstract class Animal { public abstract void eat(); } class Cat extends Animal { @Override public void eat() { System.out.println("貓吃魚"); } } class AnimalOperator { public void useAnimal(Animal a) { //Animal a = new Cat(); a.eat(); } public Animal getAnimal() { Animal a = new Cat(); return a; } } public class AnimalDemo { public static void main(String[] args) { //建立操作類物件,並呼叫方法 AnimalOperator ao = new AnimalOperator(); Animal a = new Cat(); ao.useAnimal(a); Animal a2 = ao.getAnimal(); //new Cat() a2.eat(); } }
1.3 介面名作為形參和返回值(理解)
- 介面作為形參和返回值
- 方法的形參是介面名,其實需要的是該介面的實現類物件
- 方法的返回值是介面名,其實返回的是該介面的實現類物件
- 示例程式碼
interface Jumpping { void jump(); } class JumppingOperator { public void useJumpping(Jumpping j) { //Jumpping j = new Cat(); j.jump(); } public Jumpping getJumpping() { Jumpping j = new Cat(); return j; } } class Cat implements Jumpping { @Override public void jump() { System.out.println("貓可以跳高了"); } } public class JumppingDemo { public static void main(String[] args) { //建立操作類物件,並呼叫方法 JumppingOperator jo = new JumppingOperator(); Jumpping j = new Cat(); jo.useJumpping(j); Jumpping j2 = jo.getJumpping(); //new Cat() j2.jump(); } }
內部類
2.1 內部類的基本使用(理解)
- 內部類概念
- 在一個類中定義一個類。舉例:在一個類A的內部定義一個類B,類B就被稱為內部類
- 內部類定義格式
- 格式&舉例:
/* 格式: class 外部類名{ 修飾符 class 內部類名{ } } */ class Outer { public class Inner { } }
- 內部類的訪問特點
- 內部類可以直接訪問外部類的成員,包括私有
- 外部類要訪問內部類的成員,必須建立物件
- 示例程式碼:
/* 內部類訪問特點: 內部類可以直接訪問外部類的成員,包括私有 外部類要訪問內部類的成員,必須建立物件 */ public class Outer { private int num = 10; public class Inner { public void show() { System.out.println(num); } } public void method() { Inner i = new Inner(); i.show(); } }
2.2 成員內部類(理解)
-
成員內部類的定義位置
- 在類中方法,跟成員變數是一個位置
-
外界建立成員內部類格式
- 格式:外部類名.內部類名 物件名 = 外部類物件.內部類物件;
- 舉例:Outer.Inner oi = new Outer().new Inner();
-
成員內部類的推薦使用方案
- 將一個類,設計為內部類的目的,大多數都是不想讓外界去訪問,所以內部類的定義應該私有化,私有
化之後,再提供一個可以讓外界呼叫的方法,方法內部建立內部類物件並呼叫。
class Outer { private int num = 10; private class Inner { public void show() { System.out.println(num); } } public void method() { Inner i = new Inner(); i.show(); } } public class InnerDemo { public static void main(String[] args) { //Outer.Inner oi = new Outer().new Inner(); //oi.show(); Outer o = new Outer(); o.method(); } }
- 將一個類,設計為內部類的目的,大多數都是不想讓外界去訪問,所以內部類的定義應該私有化,私有