自定義數(shù)據(jù)類型的使用
3.1 辨析成員變量與方法參數(shù)的設(shè)計定義
? 定義長方形類,包含求周長與求面積的方法
? 定義數(shù)學(xué)工具類,包含求兩個數(shù)和的二倍與求兩個數(shù)積的方法
思考:這兩個類的計算方法均需要兩個數(shù)參與計算,請問兩個數(shù)定義在成員位置還是形參位置更好,為什么?
如果變量是該類的一部分時,定義成成員變量。
如果變量不應(yīng)該是類的一部分,而僅僅是功能當(dāng)中需要參與計算的數(shù),則定義為形參變量。
? 數(shù)學(xué)工具類
public class MathTool {
//求兩個數(shù)的和的二倍
public double sum2times(int number,int number2) {
return (number+number2)2;
}
//求兩個數(shù)的積
public double area(int number,int number2) {
return numbernumber2;
}
}
? 長方形類
public class CFX {
//因為長與寬,在現(xiàn)實事物中屬于事物的一部分,所以定義成員變量
private int chang;
private int kuan;
public CFX(int chang, int kuan) {
this.chang = chang;
this.kuan = kuan;
}
//求長與寬的周長
public double zhouChang() {
return (chang+kuan)*2;
}
//求長與寬的面積
public double mianJi() {
return chang*kuan;
}
public int getChang() {
return chang;
}
public void setChang(int chang) {
this.chang = chang;
}
public int getKuan() {
return kuan;
}
public void setKuan(int kuan) {
this.kuan = kuan;
}
}
3.2 類作為方法參數(shù)與返回值
? 類作為方法參數(shù)
在編寫程序中,會經(jīng)常碰到調(diào)用的方法要接收的是一個類類型的情況,那么這時,要向方法中傳入該類的對象。如下代碼演示:
class Person{
public void show(){
System.out.println("show方法執(zhí)行了");
}
}
//測試類
public class Test {
public static void main(String[] args) {
//創(chuàng)建Person對象
Person p = new Person();
//調(diào)用method方法
method(p);
}
//定義一個方法method,用來接收一個Person對象,在方法中調(diào)用Person對象的show方法
public static void method(Person p){
p.show();
}
}
? 類作為方法返回值
寫程序調(diào)用方法時,我們以后會經(jīng)常碰到返回一個類類型的返回值,那么這時,該方法要返回一個該類的對象。如下代碼演示:
class Person{
public void show(){
System.out.println("show方法執(zhí)行了");
}
}
//測試類
public class Test {
public static void main(String[] args) {
//調(diào)用method方法,獲取返回的Person對象
Person p = method();
//調(diào)用p對象中的show方法
p.show();
}
//定義一個方法method,用來獲取一個Person對象,在方法中完成Person對象的創(chuàng)建
public static Person method(){
Person p = new Person();
return p;
}
}
3.3 抽象類作為方法參數(shù)與返回值
? 抽象類作為方法參數(shù)
今后開發(fā)中,抽象類作為方法參數(shù)的情況也很多見。當(dāng)遇到方法參數(shù)為抽象類類型時,要傳入一個實現(xiàn)抽象類所有抽象方法的子類對象。如下代碼演示:
//抽象類
abstract class Person{
public abstract void show();
}
class Student extends Person{
@Override
public void show() {
System.out.println("重寫了show方法");
}
}
//測試類
public class Test {
public static void main(String[] args) {
//通過多態(tài)的方式,創(chuàng)建一個Person類型的變量,而這個對象實際是Student
Person p = new Student();
//調(diào)用method方法
method(p);
}
//定義一個方法method,用來接收一個Person類型對象,在方法中調(diào)用Person對象的show方法
public static void method(Person p){//抽象類作為參數(shù)
//通過p變量調(diào)用show方法,這時實際調(diào)用的是Student對象中的show方法
p.show();
}
}
? 抽象類作為方法返回值
抽象類作為方法返回值的情況,也是有的,這時需要返回一個實現(xiàn)抽象類所有抽象方法的子類對象。如下代碼演示:
//抽象類
abstract class Person{
public abstract void show();
}
class Student extends Person{
@Override
public void show() {
System.out.println("重寫了show方法");
}
}
//測試類
public class Test {
public static void main(String[] args) {
//調(diào)用method方法,獲取返回的Person對象
Person p = method();
//通過p變量調(diào)用show方法,這時實際調(diào)用的是Student對象中的show方法
p.show();
}
//定義一個方法method,用來獲取一個Person對象,在方法中完成Person對象的創(chuàng)建
public static Person method(){
Person p = new Student();
return p;
}
}
3.4 接口作為方法參數(shù)與返回值
? 接口作為方法參數(shù)
接口作為方法參數(shù)的情況是很常見的,經(jīng)常會碰到。當(dāng)遇到方法參數(shù)為接口類型時,那么該方法要傳入一個接口實現(xiàn)類對象。如下代碼演示。
//接口
interface Smoke{
public abstract void smoking();
}
class Student implements Smoke{
@Override
public void smoking() {
System.out.println("課下吸口煙,賽過活神仙");
}
}
//測試類
public class Test {
public static void main(String[] args) {
//通過多態(tài)的方式,創(chuàng)建一個Smoke類型的變量,而這個對象實際是Student
Smoke s = new Student();
//調(diào)用method方法
method(s);
}
//定義一個方法method,用來接收一個Smoke類型對象,在方法中調(diào)用Smoke對象的show方法
public static void method(Smoke sm){//接口作為參數(shù)
//通過sm變量調(diào)用smoking方法,這時實際調(diào)用的是Student對象中的smoking方法
sm.smoking();
}
}
? 接口作為方法返回值
接口作為方法返回值的情況,在后面的學(xué)習(xí)中會碰到。當(dāng)遇到方法返回值是接口類型時,那么該方法需要返回一個接口實現(xiàn)類對象。如下代碼演示。
//接口
interface Smoke{
public abstract void smoking();
}
class Student implements Smoke{
@Override
public void smoking() {
System.out.println("課下吸口煙,賽過活神仙");
}
}
//測試類
public class Test {
public static void main(String[] args) {
//調(diào)用method方法,獲取返回的會吸煙的對象
Smoke s = method();
//通過s變量調(diào)用smoking方法,這時實際調(diào)用的是Student對象中的smoking方法
s.smoking();
}
//定義一個方法method,用來獲取一個具備吸煙功能的對象,并在方法中完成吸煙者的創(chuàng)建
public static Smoke method(){
Smoke sm = new Student();
return sm;
}
}