目录

一: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. 2022-2028年中国综艺节目市场深度调研及投资前景预测报告
  2. 用 Redis 搞定游戏中的实时排行榜,附源码!
  3. DNS浅析-Bind软件的使用及搭建一个简单的DNS缓存服务器
  4. 团队作业——随堂小测(同学录)
  5. V3S拍照上传又拍云bug排查过程
  6. android 两个客户端间的通信(Socket通信)
  7. python中的正则表达式是干嘛的_操作python中的正则表达式(上)
  8. Grub2主题修改和美化--------LinuxWindows
  9. CentOS设置永久静态路由
  10. 化作春泥更护花的上一句是什么?化作春泥更护花作者是谁
  11. myeclipse 8.5安装freemarker插件方法
  12. 机器学习实战 | Python机器学习算法应用实践
  13. 一款好看的pycharm主题Atom One Dark
  14. 北森职业测试软件包括的取向,北森人才测评介绍(上).doc
  15. Sublime Text3配置LaTeX环境及使用Sumatra PDF作为阅读器——亲测可用
  16. Win10输入法无法选择,右下角出现叉号,提示IME被禁用
  17. 使用vs建立web网站及IIS
  18. ADG修改主备数据同步规则--ARCHIVE_LAG_TARGET参数
  19. gitlab Push 异常:commiter(xxx)不是GitLab中的中文名
  20. RKISP_Driver_User_Manual

热门文章

  1. Java:Scanner中的nextInt()方法
  2. 轻松访问Google Chrome浏览器的特殊页面
  3. MindManager2020流程图制作教程分享
  4. SQL布尔盲注 —— 【WUST-CTF2020】颜值成绩查询
  5. 一个十分有趣的笑话:
  6. “互联网+”:工业革命的需求与变革
  7. 112Gbps SerDes/PHY的信号完整性验证测试(Signal Integrity when testing 400/800G Ethernet Base on 112Gb/s)
  8. iptable 详解_iptable详解
  9. FPGA - Zynq - 加载 - FSBL源码解析1
  10. 计算机作业微波炉工作的原理,微波炉工作原理是什么 微波炉使用方法【详解】...