目录

7.1、对象数组

案例1:

7.2、 构造方法

7.2.1、无参构造方法

7.2.2、 有参构造方法

7.3、方法重载


7.1、对象数组

对象数组的数据类型就是具体的类名,对象数组存储的就是这个类的对象,每个数组元素就是一个对象,当根据下标找到某个元素时,可以按照对象的使用方法来使用该元素

案例1:

/*
     * 使用学员对象数组作为参数,实现学员成绩修改
     * 如果学员成绩小于60,提高2分
     */

  • 定义代码
package com.bdqn.demo01;public class Student {//仅仅用来创建对象//定义属性public String name;public double score;}
package com.bdqn.demo01;public class StudentMethod {/** 使用学员对象数组作为参数,实现学员成绩修改* 如果学员成绩小于60,提高2分*///定义方法实现上述需求public void add(Student[] stus){  ////遍历传递过来的Student数组,取出里面每一个Student对象,然后对该对象的成绩进行判断,低于60分,提高2分for(int i =0;i<stus.length;i++){//判断if(stus[i].score<60){stus[i].score+=2;//stus[i].score=stus[i].score+2;}}}}
  • 调用代码
package com.bdqn.demo01;public class StudentMethodText{public static void main(String[] args) {//准备一个学生对象数组Student[] stus = new Student[3];//创建3个学生对象Student stu1 = new Student();stu1.name = "zhangsan";stu1.score = 59;Student stu2 = new Student();stu2.name = "lisi";stu2.score = 49;Student stu3 = new Student();stu3.name = "wangwu";stu3.score = 70;//数组赋值stus[0] = stu1;stus[1] = stu2;stus[2] = stu3;System.out.println("调用方法之前的学生数组:");for (int i = 0; i < stus.length; i++) {System.out.println(stus[i].score);}//调用StudentMethod类中的add()方法StudentMethod stum = new StudentMethod();stum.add(stus);System.out.println("调用方法之后的学生数组:");for (int i = 0; i < stus.length; i++) {System.out.println(stus[i].score);}}}

案例2:

//定义一个方法,实现所有品牌的汽车价格都上调1000元

  • 定义代码
package com.bdqn.demo02;public class Car {//定义属性public String brand;public double price;}
package com.bdqn.demo02;public class CarMethod {//定义一个方法,实现所有品牌的汽车价格都上调1000元public void add(Car[] cars){for (int i = 0; i < cars.length; i++) {cars[i].price+=1000;}}}
  • 调用代码
package com.bdqn.demo02;public class Test {public static void main(String[] args) {//创建3个Car类型的对象Car car1 = new Car();car1.brand = "宝马";car1.price = 200000;Car car2 = new Car();car2.brand = "奔驰";car2.price = 300000;Car car3 = new Car();car3.brand = "奥迪";car3.price = 400000;//创建Car类型的数组Car[] cs = {car1,car2,car3};CarMethod cm = new CarMethod();cm.add(cs);for (int i = 0; i < cs.length; i++) {System.out.println(cs[i].price);}}}

7.2、 构造方法

Java中,当类创建一个对象时会自动调用该类的构造方法,构造方法分为

(1) 无参构造方法(默认构造方法)

(2)有参构造方法

语法结构:

访问修饰符 构造方法名(参数列表){

//初始化代码

}

  • 构造方法是用来创建对象的
  • 构造方法的名称与类名相同
  • 构造方法没有返回值,void的也不写
  • 当你在类中自定义了其它有参构造方法后,默认的无参构造方法会被覆盖,如果你还需要使用无参构造方法,就需要自己手动添加一个无参构造方法

7.2.1、无参构造方法

public class HelloWorld {public static void main(String[] args) {System.out.println("hello world");}
}

将上述代码的.class文件进行反编译:

import java.io.PrintStream;public class HelloWorld
{//无参构造方法public HelloWorld(){}public static void main(String args[]){System.out.println("hello world");}
}

7.2.2、 有参构造方法

Person定义代码:

package com.bdqn.demo03;public class Person {//定义属性String name;int age;char gender;double height;double weight;String phoneNumber;String address;String hobby;String country;String job;String email;//定义一个有参构造方法public Person(String name,int age,char gender,double height,double weight,String phoneNumber,String address,String hobby,String country,String job,String email){//this表示当前对象。一会谁调用此构造 方法创建对象,this就表示创建的这个对象this.name = name;this.age = age;this.gender =gender;this.height = height;this.weight = weight;this.phoneNumber=phoneNumber;this.address = address;this.hobby = hobby;this.country = country;this.job = job;this.email = email;}//定义一个有参构造方法public Person(String name,int age,char gender){this.name = name;this.age = age;this.gender =gender;}public Person() {}/** 方法重载:*  在同一个类中,多个方法的方法名相同,参数列表不同,这个现象就是方法重载,与方法的返回值和访问权限修饰符无关*          参数列表不同体现在参数的个数,参数的类型,参数的顺序* *             sum(int a,int b)*           sum(int a,int b,int c)*             sum(double a,double b)*             sum(int a ,double b)*           sum(double a,int b) */}

测试类:

package com.bdqn.demo03;public class PersonTeat{public static void main(String[] args) {// 创建Person类对象,并且给对象属性赋值Person p1 = new Person();p1.name = "张三";p1.age = 30;p1.gender = '男';p1.height = 175.5;p1.weight = 80;p1.phoneNumber = "13212341234";p1.address = "安徽合肥";p1.hobby = "敲代码";p1.country = "中国";p1.job ="程序员";p1.email = "1234@qq.com";//可以在Person类中定义一个有参构造方法进行创建对象Person p2 = new Person("lisi", 12, '女', 165, 50, "13245679876", "安徽安庆", "敲代码", "中国", "前端", "123@123.com");System.out.println(p2.name);System.out.println(p2.age);//调用包含3个参数的构造方法创建Person对象Person p3 = new Person("王五", 22, '男');}}

7.3、方法重载

/*
     * 方法重载:
     *     在同一个类中,多个方法的方法名相同,参数列表不同,这个现象就是方法重载,与方法的返回值和访问权限修饰符无关
     *             参数列表不同体现在参数的个数不同,参数的类型不同,参数的顺序不同

//如下的4个方法构成了重载public void getSum(int i,int j){System.out.println("1");}public void getSum(double d1,double d2){System.out.println("2");}public void getSum(String s ,int i){System.out.println("3");}public void getSum(int i,String s){System.out.println("4");}

七:面向对象-->方法和重载方法相关推荐

  1. 重写方法,重载方法,虚方法和抽象方法的使用

    重写方法,重载方法,虚方法和抽象方法. 重写:指子类重新实现父类的某些方法,以实现一些新的功能.重写的关键字是override.并且重写的方法其签名是相同的. 重载:指允许类中具有相同函数名的方法,但 ...

  2. 方法功能从无参方法、含参方法到重载方法

    时间紧张,先记一笔,后续优化与完善. 一.无参方法 a.无参方法法语: 访问修饰符> 返回类型 <方法名>(){ //方法的体主 } b.义定 什么是无参方法?所谓无参方法即形如,诸 ...

  3. C++ 覆盖方法、重载方法的理解

    辨析 覆盖 如何覆盖?覆盖就是将基类的方法,在子类重新声明一次,然后再改写一下它的实现代码. 名称.参数.返回值都必须与原方法相同 重载 重载,是同一类中,方法名相同,参数列表不同的一组方法的定义. ...

  4. C++ 覆盖方法与重载方法

    覆盖方法(overriding) 什么是类函数的覆盖方法: 覆盖方法用于同一函数的重写即派生类函数覆盖基类同名函数 覆盖方法重写(覆盖)了一个方法,以实现不同的功能.一般是用于子类在继承父类时,重写( ...

  5. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  6. 方法的重载与重写区别

    重写和重载的区别 (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) Jav ...

  7. 在java中方法重载的要求,Java方法的重载

    Java方法的重载 方法重载:在类中方法名称相同,但是形式参数不同 public class Demo15 { public static void main(String[] args) { int ...

  8. 构造方法和方法的重载。

    ---恢复内容开始--- 构造器,又称为构造方法.constructor 构造器用于构造该类的实例. 格式: [修饰符] 类名(形参列表){ //n条语句 } 是一种特殊的方法: 1.通过new关键字 ...

  9. 【JavaSE05】Java中方法与重载、递归

    1.方法的声明和调用 什么是方法?为什么需要方法?代码复用,方便软件升级 什么是方法? 具备特定功能的一段独立的代码段 标准的方法格式:(注意格式的顺序) 修饰符 返回值类型 方法名(参数类型 参数名 ...

最新文章

  1. kalman滤波从应用到推导
  2. C指针原理(12)-C指针基础
  3. Request_获取请求体数据
  4. 最全面的MySQL面试题大全-二
  5. Second easyui框架学习
  6. 联发科mtk手机处理器怎么样_【今日短讯】一加概念手机Concept One发布|苹果iPhone 9渲染图出炉|联发科5G处理器天玑800发布...
  7. LINUX安装CUDA 9.2,提示缺少文件的解决办法
  8. 第 200 章 Office
  9. 大型企业能源管理系统的设计与应用
  10. 高德地图---已知两点经纬度坐标求距离和角度
  11. springsoure.sts下载地址
  12. win7无法识别linux usb设备,win7无法安装usb驱动解决工具
  13. [ERP/鼎捷E10][计划管理]主生产计划MPS
  14. java水果超市mysql_课内资源 - 水果超市管理系统(JDBC、纯手写未使用windowbuilding)...
  15. 删除Windows中设备与驱动器下的多余图标
  16. js实现form的submit请求
  17. js字符转换成分数_JavaScript实现分数显示
  18. Prezi - the best presentation tool
  19. FANUC机器人有关执行程序的停止和恢复的说明
  20. 09-Scrum过程-评审会(Review Meeting) 反思会(Retrospective Meeting)

热门文章

  1. android音乐播放器保活,Android 自用 App保活——音乐播放保活适配8.0 (贼好用) | 韩小呆...
  2. windows7下建行网银点支付后页面无法响应
  3. 达观数据智能工单处理,助力运营商实现业务流程智能化改造
  4. 学c语言要先学什么,C语言入门要先学什么,你知道怎么入手吗?
  5. Coord.Attention 协调注意力机制
  6. 【PPT】阿里@甑子:《前端智能化实践》——逻辑代码生成
  7. Jenkins job A触发job B的方法和踩坑指南
  8. ie6 ie7下,Li不能自动换行,出现竖排文字现象(PS:li不固定宽度,所有li同一行显示),在ie8却可以...
  9. 如何在 Mac 上卸载 Java?
  10. JavaScript在线编程