面向对象---形式参数和返回值的问题

原创 2018年04月17日 20:40:55

一、形式参数

1、基本类型

    此种类型比较简单,对实际参数没有影响

2、引用类型

    1)基本类

        形式参数是基本类,以代码为例:
class Student{
	public void study() {
		System.out.println("Good Good Study,Day Day Up...");
	}
}
class StudentDemo{
	//成员方法
	public void method(Student s) {
		s.study(); 
	}
}

//测试类
public class PersonTest {
	
	public static void main(String[] args) {
		//方式一
		StudentDemo sd = new StudentDemo() ;
		sd.method(new Student());
		System.out.println("----------------");
		
		//方式二:链式编程
		//匿名对象是可以作为参数传递的
		new StudentDemo().method(new Student());
	}
}
由于在StudentDemo类中,method方法的形式参数是一个Student类(具体类),那么如何调用StudentDemo中的mehtod()方法呢?首先要创建一个StudentDemo对象来调用method方法,接下来需要创建Student对象来作为实际参数去传递。

    2)抽象类

    形式参数是一个抽象类:此时这块需要的是该抽象类的子类对象   (抽象类多态...)
//抽象的Person类
abstract class Person{
	public void teach() {
		System.out.println("今天天气不错,适合踢球...");
	}
}
class PersonDemo{
	public void method(Person p) { //不能直接创建对象 Person p =new Person();  可以采用抽象类多态的形式实现
		p.teach();
	}
}
//需要提供Pereson类的子类
class Teacher extends Person{
	
}
//测试类
public class TeacherTest {

	public static void main(String[] args) {
		PersonDemo pd = new PersonDemo() ;
//		Perosn p = new  Person() ; //错误的,抽象类是不能实例化的
		//可以通过子类进行实例化
		Person p = new Teacher();//抽象类多态
		pd.method(p);
	}
}
由于在PersonDemo类中,method方法的形式参数是一个Person类(抽象类),于是创建PersonDemo类对象pd,定义子类Teacher类来实例化Person类,利用抽象类多态Person p = new Teacher(); 通过pd调用method方法,并将p传过去。

    3)接口

    形式参数是一个接口:
//定义一个接口
interface Inter{
	public abstract void study() ;
}
class InterDemo{
	public void show(Inter i) { //需要创建该接口对象,不能直接实例化 Inter i = new Inter() ;错误的
				    //需要提供接口的子实现类,可以通过子实现类进行实例化:接口多态...
		i.study();
	}
}
//子实现类
class Student2 implements Inter{

	@Override
	public void study() {
		System.out.println("Good Good Study ,Day Day Up ...");
	}
}
//测试类
public class StudentTest {

	public static void main(String[] args) {
		//需求:如何调用InterDemo这个类中的show()方法?
		//创建InterDemo类的对象
		InterDemo id = new InterDemo() ;
		//接口多态的形式创建Inter对象
		Inter i = new Student2() ;
		id.show(i);
	}
}
在这里除了通过接口多态的方式外,还有另外一种方法:匿名内部类,而且在实际开发中用的要更多一点,这个后面再具体讲。

二、返回值

1、基本类型

    如果返回值基本类型:用对应的基本类型去接收数据即可!

2、引用类型

    1)基本类

    需要提供一个该具体类的对象来接收

class Student3{
	public void study() {
		System.out.println("Good Good Study ,Day Day Up ...");
	}
}
class StudentDemo3{
	public int show() {
		return 100 ;
	}
	public Student3 method() {

		//方式一:匿名对象的方式
		//return new Student3();
		//方式二:返回具体对象
		Student3 s = new Student3();
		return s ;
	}
}
//测试类
public class PersonTest2 {

	public static void main(String[] args) {
		//采用匿名对象的方式
		Student3 s = new StudentDemo3().method() ;
		s.study();
		System.out.println("-------------------");
		//采用具体对象的方式
		StudentDemo3 sd = new StudentDemo3() ;
		Student3 s2 = sd.method() ;
		s2.study(); 
	}
}

    2)抽象类

    需要当前抽象类的子类对象接收(抽象类多态)

abstract class Person2{ 
	 public void show() {
		 System.out.println("今天天气不错");
	 }
 }
class PersonDemo2{
	 public Person2 method() {

		 //方式一:抽象类多态的形式创建对象
		 //Person2 p = new Teacher2() ;
		 //return p ;
		 
		 //方式二:匿名对象,还是通过子类实例化
		 return new Teacher2() ;	
	 }
 }
class Teacher2 extends Person2{	//抽象类多态
	 
 }
 //测试类
public class StudentTest2 {

	public static void main(String[] args) {
		
		PersonDemo2 pd = new PersonDemo2() ;
		Person2 p = pd.method() ;
		p.show(); 
	}
}

    3)接口

interface Inter2{
	public abstract void study();
}

class InterDemo2{
	public static Inter2 method() {
		
//		return new InterImpl() ; //匿名对象的方式
		Inter2 i = new InterImpl();//接口多态的方式
		return i ;
	}
}
class InterImpl implements Inter2{

	@Override
	public void study() {
		System.out.println("好好学习,天天向上...");
	}
}
public class TeacherTest2 {
	
	public static void  main(String[] args) {
		InterDemo2 id = new InterDemo2() ;
		Inter2 i = id.method() ; //或Inter2 i = new InterDemo().method(); 
		i.study(); 
	}
}

面向对象之形式参数与返回值问题

1.形式参数为类名时:需要的是该类的对象 程序代码如下: 1: class Student { 2: public void study() ...
  • Gttxiaoyao
  • Gttxiaoyao
  • 2015-07-12 22:39:38
  • 245

面向对象9---形式参数和返回值问题

一.形式参数 形式参数:  基本类型  引用类型:   类:要的是该类对象   抽象类:要的是该抽象类子类对象   接口:要的是该接口的子类对象 具体类作为形式参数...
  • lhgwp
  • lhgwp
  • 2017-07-18 18:43:57
  • 98

Java学习之形式参数,返回值

一、形式参数 1、数据类型: 基本类型:byte,short,int,long,float,double,char,()boolean 引用类型:数组,类,接口 2、形式参数: 基本类型:要...
  • RookieThree
  • RookieThree
  • 2017-04-17 10:00:27
  • 132

java基础(五)面向对象/类/对象/形式参数/局部和成员变量

面向对象:面向对象是基于面相过程的;强调的是对象,然后由对像调用功能;强调的是结果; 面向过程:强调的是每一个过程的步骤; 面向对象特征:封装encapsulation,继承inheritance,多...
  • u011146511
  • u011146511
  • 2016-06-26 10:30:38
  • 564

面向对象_方法的形式参数是类名的时候如何调用

/* 形式参数的问题: 基本类型:形式参数的改变不影响实际参数 引用类型:形式参数的改变直接影响实际参数 */ //形式参数是基本类型 class Demo{ public int sum(int a...
  • L1585931143
  • L1585931143
  • 2016-08-06 23:43:07
  • 1565

Swift视频教程:函数篇 形式参数与返回值③多返回值

  • 2015年08月26日 16:28
  • 40.38MB
  • 下载

Swift视频教程:函数篇 形式参数与返回值②无返回值

  • 2015年08月26日 16:27
  • 22.49MB
  • 下载

形式参数和返回值的类型问题

一:形式参数问题 数据类型: 基本类型:byte,short,int,long,float,double,char,boolean 引用类型:类,接口,数...
  • Yaphst
  • Yaphst
  • 2017-04-19 22:47:06
  • 334

形式参数和返回值问题

形式参数的问题:    形式参数是基本类型,对实际参数没有影响(简单)    形式参数是引用类型:        类(普通类)        抽象类        接口 返回值:    返回值是基本类...
  • luzhu1234
  • luzhu1234
  • 2018-04-19 11:47:52
  • 3

形式参数和返回值的问题深入研究

形式参数形式参数: 基本类型(太简单,不是我今天要讲解的) 引用类型 类名:(匿名对象的时候其实我们已经讲过了)需要的是该类的对象 抽象类:需要的是该抽...
  • gafeng123456
  • gafeng123456
  • 2016-02-17 12:29:09
  • 131
收藏助手
不良信息举报
您举报文章:面向对象---形式参数和返回值的问题
举报原因:
原因补充:

(最多只允许输入30个字)