目录

一:final关键字

二:形式参数和返回值问题

1:形式参数

2:返回值类型

3:例子


一:final关键字

1:final关键字是最终的意思,可以修饰类,成员变量,成员方法。

2:修饰类,类不能被继承

3:修饰变量,变量就变成了常量,只能被赋值一次

4:修饰方法,方法不能被重写

5:final修饰局部变量

在方法内部,该变量不可以被改变

在方法声明上,局部变量是值不能被改变, 引用类型是地址值不能被改变

6:final修饰变量的初始化时机在对象构造完毕前即可(可以在局部变量,构造代码块以及成员变量)

二:形式参数和返回值问题

1:形式参数

基本类型

引用类型(类,数组,接口)

类做形参时时,传入的应该是一个对象。

抽象类做形参,由于抽象类不能实例化所以应该有继承子类实例化并传入对象

接口做形参时,应该是传入的具体实现接口的类的实例化对象

2:返回值类型

基本类型

引用类型

类做返回值时,返回的应该是一个对象。

抽象类做返回值,由于抽象类不能实例化所以应该有继承子类实例化并返回对象

接口做返回值时,应该是返回具体实现接口的类的实例化对象

注意:应该用多态实例化对象

3:例子

1:数组做形参

package com.shujia.java.day2.proctice3;public class Text1 {public static void main(String[] args) {int[] a={3,4,8,6,9,10,45};int i = arrayMax(a);//调用arrayMax方法返回一个最大值System.out.println("数组最大值为"+i);}/*定义一个方法arrayMax,传入的形参是数组,计算数组的最大值 */public static int  arrayMax(int[] a){int max=0;for (int i : a) {if(i>max){max=i;}}return max;}
}

2:类做形参

package com.shujia.java.day2.proctice3;
class Student{private  int age;private  String name;public Student(int age, String name) {this.age = age;this.name = name;}public Student() {}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void show(){System.out.println(getName()+"**"+getAge());}
}
public class Text2 {public static void main(String[] args) {Student student = new Student(20,"小华");//使用有参构造创建一个20岁叫小华的学生showNews(student);//调用showNews方法传入学生对象}/* 定义一个方法传入的是Student类 */public static void showNews(Student student) {student.show();//调用show方法}
}

3:抽象类做形参

package proctice3;
/*定义一个抽象类Person有姓名和年龄成员属性和show抽象方法,定义一个学生类继承Person抽象类*/
abstract  class Person{private int age;private String name;public Person(int age, String name) {this.age = age;this.name = name;}public Person() {}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract void show();}
class Student1 extends Person{public Student1(int age, String name) {super(age, name);}public Student1() {}@Overridepublic void show() {System.out.println(super.getName()+"**"+super.getAge());}
}
public class Text3 {public static void main(String[] args) {Person person=new Student1(18,"小花");//多态实例化 Person创建一个18的小花对象show(person);//调用show方法传入实例化对象}/*定义一个形参是Person抽象类的方法*/public static void show(Person person){person.show();//调用show方法}
}

4:接口做形参

package proctice3;
/*定义一个学习接口,接口里有一个抽象方法学习,定义一个老师类实现学习接口*/
interface Study{public abstract void study();
}
class Teacher implements Study{@Overridepublic void study() {System.out.println("老师需要学习");}
}
public class Text4 {public static void main(String[] args) {Study s=new Teacher();//接口多态创建一个s对象show(s);//将对象传入show方法}public static void show(Study study){//定义一个show方法传入的形参是接口study.study();//调用study方法}
}

5:返回值是数组

package proctice3;public class Text5 {public static void main(String[] args) {int[] arr={1,5,2,3,4,9,0,19,12};int[] sort = sort(arr);System.out.print("[");/*输出数组*/for (int i : sort) {if(i==sort[sort.length-1]){ System.out.print(i+","+"]");}else{System.out.print(i+",");}}}/*定义一个冒泡排序对数组进行排序返回数组*/public static int[] sort(int[] a){for(int i=0;i<a.length;i++){for(int j=0;j<a.length-i-1;j++){if(a[j+1]<a[j]){int tem=a[j];a[j]=a[j+1];a[j+1]=tem;}}}return a;}}

6:返回值是类

package proctice3;
//定义一个学生类
class Student3{private  int age;private  String name;public Student3(int age, String name) {this.age = age;this.name = name;}public Student3() {}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void show(){System.out.println(getName()+"**"+getAge());}
}
public class Text6 {public static void main(String[] args) {Student3 s = show();//调用show方法//利用set方法给对象赋值s.setName("小华");s.setAge(18);s.show();//调用Student3的show方法}public static Student3 show(){//定义一个返回值是Student3类型的数据return new Student3();//Student3的匿名对象}
}

7:返回值是抽象类

package proctice3;
/*定义一个抽象类Person有姓名和年龄成员属性和show抽象方法,定义一个学生类继承Person抽象类*/
abstract  class Person{private int age;private String name;public Person(int age, String name) {this.age = age;this.name = name;}public Person() {}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract void show();}
class Student1 extends Person{public Student1(int age, String name) {super(age, name);}public Student1() {}@Overridepublic void show() {System.out.println(super.getName()+"**"+super.getAge());}
}
public class Text3 {public static void main(String[] args) {Person person = show();//调用show方法返回 Person对象//利用set方法赋值person.setAge(18);person.setName("小华");//调用 Person的show方法person.show();}/*定义一个形参是Person抽象类的方法*/public static Person show(){Person p=new Student1();//多态实例化 抽象类Personreturn  p;}
}

7:返回值是接口

package proctice3;
/*定义一个学习接口,接口里有一个抽象方法学习,定义一个老师类实现学习接口*/
interface Study{public abstract void study();
}
class Teacher implements Study{@Overridepublic void study() {System.out.println("老师需要学习");}
}
public class Text4 {public static void main(String[] args) {Study study = show();//调用show方法study.study();}public static Study show(){//定义一个show方法返回的是接口StudyStudy s=new Teacher();//接口实例化创建对象return s;}
}

java基础之final关键字,形式参数和返回值问题相关推荐

  1. java 内部类 返回值_Java基础第10天+形式参数和返回值的问题、包、导包、权限修饰符、常见的修饰符、内部类(局部内部类,成员内部类,匿名内部类)...

    1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的 ...

  2. 【Java基础】final关键字总结

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  3. java基础之final关键字_繁星漫天_新浪博客

    final关键字可以修饰类.变量.方法,它有"这是无法改变的"或者"最终"的含义 因此被final修饰的有以下特性: 1.final修饰的类不能继承 2.fin ...

  4. 详解java中的final关键字

    概述 final 简介 final关键字可用于多个场景,且在不同场景具有不同的作用.首先,final是一个非访问修饰符,仅适用于变量,方法或类.下面是使用final的不同场景: 上面这张图可以概括成: ...

  5. 浅谈Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  6. 浅析Java中的final关键字

    浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...

  7. 深入理解Java中的final关键字

    深入理解Java中的final关键字 http://www.importnew.com/7553.html Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什 ...

  8. 在Java中使用final关键字可以提高性能吗?

    本文翻译自:Does use of final keyword in Java improve the performance? In Java we see lots of places where ...

  9. java final 修改_“无法改变的设计”——浅谈Java中的final关键字

    在Java中,final关键字可以用来修饰类.变量(包括成员变量和局部变量).方法,下面从这三个方面分别说明. final方法 当一个方法被final修饰时,表明这个方法不能被子类重写. 下面程序试图 ...

最新文章

  1. java lock 效率_工作常用4种Java线程锁的特点,性能比较、使用场景
  2. 以太坊地址算法php,以太坊ETH源码分析(1):地址生成过程
  3. 中邮消费金融签约神策数据 致力最优产品与服务模式
  4. 互联网级监控系统必备-时序数据库之Influxdb技术
  5. c语言飞机订票系统设计,飞机订票系统设计
  6. 理解Mysql prepare预处理语句:mysql_stmt_init(MYSQL *mysql);
  7. ASP.NET获取IP地址与MAC地址方法
  8. idea 上传文件 java,IntelliJ IDEA如何上传和下载文件
  9. maya绝招(1-20)
  10. Atiitt attilax掌握的前后技术放在简历里面.docx
  11. mysql怎么查询两页数据_mysql分页查询踩坑报告
  12. 博士申请 | 新加坡国立大学Xinchao Wang老师招收图神经网络方向博士/博后
  13. Dynamics CRM 365 - 零基础入门学习后端插件语法总结(样例使用方法)
  14. 搜索引擎优化的九大方法
  15. 【c++笔记一】名字空间(namespace)
  16. J.K.罗琳 哈佛大学毕业演讲
  17. 抖音短视频标题什么样的容易火:国仁楠哥
  18. 【SSL 2882】[POJ 3250]排队【单调栈模板】
  19. 2021年低压电工及低压电工证考试
  20. 使用百度云GPU主机做深度学习

热门文章

  1. lucene入门介绍篇
  2. K8S二进制单节点 一键部署K8S_V1.21.x
  3. 排序方法python实现_八字排盘,排大运
  4. python一年365天、初始水平值_一年365天,初始水平值为1.0,每工作一天水平增加0.01,不工作时水平不下降,一周连续工作5天,请编写程序计算最终水平值。...
  5. failed to parse json-----解析json失败
  6. 用redis做注册中心如何感知服务的上线和下线?
  7. jQuery简单动画实例1--王者荣耀手风琴
  8. 重装系统后出现0xc000000e解决办法
  9. uvw对位平台,halcon联合c#编程,供学习的朋友参考
  10. 12.4.2 虚拟存取方法文件 / VSAM文件