4.59 抽象类名作为形式参数

/*
形式参数:
	基本类型
	引用类型
		类名:(匿名对象的已经讲过了)需要的是该类的对象
		抽象类:需要的是该抽象的类子类对象
		接口
*/
abstract class Person {
	public abstract void study();
}

class PersonDemo {
	public void method(Person p) {
		p.study();
	}
}

// 定义一个具体的学生类
class Student extends Person {
	public void study() {
		System.out.println("Good Good Study,Day Day Up");
	}
}

class PersonTest {
	public static void main(String[] args) {
		// 目前是没有办法的使用的
		// 因为抽象类没有对应的具体类
		// 那么,就应该先定义一个具体类
		// 需求:要使用PersonDemo类中的method()方法
		PersonDemo pd = new PersonDemo();
		Person p = new Student();
		pd.method(p);
	}
}
时间: 2024-08-09 14:47:50

4.59 抽象类名作为形式参数的相关文章

把数组中的n个元素的值分别扩大5倍,要求数组名作为参数。

通过把数组名作为参数传递,实际上是把数组的地址传递给形式参数.这样在被调用函数中就可以对整个数组进行操作了,将数组名作为参数传递,调用函数和被调用函数都是对占同一块内存单元的数组进行操作. #include<stdio.h> #define N 10 void MulArray1(int *x,int n);//数组名作为参数的函数原型 void MulArray2(int *aPtr,int n);//指针作为参数的函数原型 void main() { int a[N]={1,2,3,4,5

C语言中数组名作为参数进行函数传递

用数组名作函数参数与用数组元素作实参有几点不同. 1) 用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的.因此,并不要求函数的形参也是下标变量.换句话说,对数组元素的处理是按普通变量对待的.用数组名作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明.当形参和实参二者不一致时,即会发生错误. 2) 在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元.在函

抽象类做函数参数问题

抽象类做函数参数 对象不可以,不过抽象类的指针和引用方式就可以,比如下面函数是合法的.void fun(CAbstract *p);void fun(CAbstract &a);非法的例子:void fun(CAbstract obj);指针和引用方式合法的原因,是因为指针和引用方式指向的对象可以是抽象类的派生类型的对象.而这些派生类可能不是抽象类. 形参实参结合的时候,就是用基类的指针和引用指向派生类对象只要是基类有的方法,都可以正常调用

Mysql中表名作为参数的问题

近期由于程序的异常,导致数据库中创建了大量的表(约4000个),纠结的是表中的数据还都是有用的. 需要合并到一个表中,首先想到的就是使用存储过程来处理,但由于表名都是动态生成的,需要解决在存储过程中处理以表名作为参数的问题. 1.用set或者declare语句将表名定义为变量,在sql中的表名位置使用变量,经验证行不通,数据库会把变量名当作表名. 2.要进行的操作直接用concat拼接出来,然后直接执行这个sql.可如何在存储过程中执行拼接的sql,经查找可使用PREPARE 来完成. 下面是示

动态游标(例如表名作为参数)以及动态SQL分析

表名作为参数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; TYPE t_data IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER; TYPE t_cur IS REF CURSOR; l_data t_data; l_rec t_cur; l_cur VARCHAR2(4000); v_fm_barcode

[C++程序设计]用数组名作函数参数

1. 用数组元素作函数实参 1 #include <iostream> 2 using namespace std; 3 4 int max_value(int x, int max) 5 { 6 return max > x ? max : x; 7 } 8 9 int main() 10 { 11 const int x = 3, y = 4; 12 int a[x][y]={{34,62,34,101},{45,67,3,0},{11,45,97,100}}; 13 int max

C---数组名作函数参数

数组名可以作函数的实参和形参.如: #include<stdio.h> int main(void) { int array[10]; f(array,10); } f(int arr[],int n) { } array为实参数组名,arr为形参数组名.在学习指针变量之后就更容易理解这个问题了.数组名就是数组的首地址,实参想形参传送数组名市级上就是传送数组的地址,形参得到改地址后也指向同一数组.这就好像同一件物品有俩个彼此不同的名称一样. 同样,指针变量的值也是地址,数组指针变量的值即为数组

C++ 数组长度 以及 数组名作为参数 传递给函数

在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: 如何求数组长度? 如果没记错,在Java中应该是有直接可用的方法的, Python中(序列)也有.len,在C/C++中,字符串倒是有strlen() (需要#include <string.h>) 一个办法是用 sizeof() 一.首先定义数组 int array[] = {18,10,15,7,1}; 一开始想都没想就直接在子函数里面 int array_length(int a[]){ int len = sizeof(

javascript 使用方法名作为参数

Example 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <title>Demo</title> 7 </head>