类与对象

概念:程序是为了模拟现实生活,解决现实中生活中的各种问题,现实中的每种实物都是独立的,每种独立的事物都可以用一种“类型”表示,这就是
类是一个概念,也可以说是模板,对象是类具体产生的一个看得见摸得着能用的实物。
比如手机是一个类,那么你现在手里拿着的手机就是一个具体的对象
将现实生活中的一类事物找到一个类型表示,这就是抽象,抽象出来的就是类。

类的定义语法:
[修饰符] class类名
{
定义构造方法;
定义属性;
定义方法;
}

注意:修饰符一般使用public(任何地方都可以使用),类名遵守帕斯卡命名法,构造方法、属性、方法都可以定义多个
对象的创建和使用:
1. 声明对象 格式:类名 对象名
2. 实例化对象,使用new关键字调用类的构造方法实例化对象 格式:对象名 = new 构造方法()
3. 属性的调用 格式:对象名.属性
4. 方法的调用 对象名.方法名([参数])
示例:定义一个英雄类并定义属性和方法,创建两个英雄实例,为属性赋值并在控制台输出不同英雄对象,调用各自英雄对象的run()方法

public class Hero {String name;  //姓名int age;      //年龄String sex;   //性别//定义奔跑方法public void run(int speed) {System.out.printf("以%dm/s的速度狂奔\n",speed);}public static void main(String[] args) {//创建英雄对象Hero hero1 = new Hero();//通过对象实例化调用属性并赋值hero1.name = "黑暗游侠";hero1.age = 20;hero1.sex = "女";System.out.println("英雄名字:"+hero1.name);System.out.println("英雄年龄:"+hero1.age);System.out.println("英雄性别:"+hero1.sex);//调用run()方法hero1.run(30);System.out.println("-----------------------------");//创建英雄对象Hero hero2 = new Hero();//通过对象实例化调用属性并赋值hero2.name = "撼地神牛";hero2.age = 30;hero2.sex = "男";System.out.println("英雄名字:"+hero2.name);System.out.println("英雄年龄:"+hero2.age);System.out.println("英雄性别:"+hero2.sex);//调用run()方法hero2.run(60);}
}

运行结果如图:

练习:创建Dota游戏中的防御塔类,通过两个坐标属性来显示防御塔的位置
分析:创建一个防御塔类,定义两个属性分别是横坐标与纵坐标,定义一个方法显示数据并在其中输出数据,定义main()方法,实例化防御塔对象,给属性赋值调用方法输出结果

public class TowerDefense {int x;        //横坐标int y;     //纵坐标public TowerDefense() {System.out.println("防御塔已被实例化");}public static void main(String[] args) {//创建防御塔对象TowerDefense td = new TowerDefense();//通过对象实例化调用属性并赋值td.x = 250;td.y = 360;System.out.printf("防御塔当前位置为(%d,%d)",td.x,td.y);}
}

运行结果如图:

方法

定义:方法是用来描述类的行为的,也就是可以做的事情
比如人可以吃饭、睡觉、运动、学习等等
语法:
访问修饰符 返回值类型 方法名 (参数列表){
//方法体;
}
注意:无返回值返回值类型使用void,有返回值的返回值类型可以是引用类型也可以是使用类型。有void无需使用关键字return,无void需使用关键字return。

示例:在Hero类中定义run(),battle()方法

public class Hero {String name;      //姓名int age;            //年龄//定义battle()方法public void battle() {System.out.println(name+"在肆无忌惮的战斗,他的年龄只有"+age+",可他的血量只有1%了...");}//定义奔跑方法public void run(int speed) {System.out.printf("以%dm/s的速度狂奔\n",speed);}public static void main(String[] args) {//创建英雄对象Hero hero = new Hero();//通过对象实例化调用属性并赋值hero.name = "暗夜魔王";hero.age = 15;//调用该对象的battle()方法hero.battle();hero.run(300);}
}

运行结果如图:

注意:有参方法调用时要给一个值,否则就会报错

方法的传参
统称为值传递方式
在上一个例题中可以看到run()方法中是有一个int类型的数据speed的,当我们调用这个方法传入300时,300的值就会传入方法中去,传入后在该范围类的值都为300,如果在该方法中将speed的值改变了,那么在调用方法时,依然保留原来的值,并不会保留在方法中改变的值
实质上就是将实参的一个副本,复制了一份去在方法中使用,方法中改变以后是不影响原来的调用的
实参的副本传递给形参,但实参本身不受任何影响

可变形参方法

概念:定义形参个数可变的参数,即允许为方法指定数量不确定的形参就是可变形参
语法:
访问修饰符 返回类型 方法名 (变量类型…变量名){
//方法体;
}
示例:通过给定可变形参方法,计算任意给定的多个int类型数据之和
分析:定义可变形参方法,int类型。使用for循环计算最终的和

public class TestCal {//定义求和方法public int sum(int...nums) {int sum = 0;//使用for循环累加for (int num : nums) {sum += num;}return sum;}public static void main(String[] args) {//创建对象TestCal cal = new TestCal();int result = cal.sum(1,3);System.out.println(result);//调用求和方法result = cal.sum(1,2,3,4);//可以用数组形式调用result = cal.sum(new int[] {3,4,5});System.out.println(result);}
}

运行结果如图:

构造方法

语法:
public 类名(){
//构造方法体;
}
注意:
1. 构造方法无需返回值类型
2. 构造方法的方法名与类名一致,否则就会报错
3. 构造方法要通过关键字new来调用,不能手动调用
4. 一个类中可以有多个构造方法,但是其中的参数不能相同(构造方法可以有参也可以无参,有参时不同构造方法参数不能相 同)

示例:创建一个士兵类,并定义一个有参构造方法

import java.util.Scanner;public class Soldiers {//定义有参构造方法public Soldiers(String name,int x,int y) {System.out.println("英雄名字"+name+"初始化横坐标="+x+"  纵坐标="+y);}public static void main(String[] args) {//创建Scanner对象,使数据从控制台输入Scanner sc = new Scanner(System.in);//使用for循环,循环输出士兵信息for (int i = 0; i < 5; i++) {System.out.println("请输入第"+(i+1)+"个士兵的名字");String name = sc.next();System.out.println("请输入横坐标:");int x = sc.nextInt();System.out.println("请输入纵坐标:");int y = sc.nextInt();//通过有参构造方法创建Soldier对象Soldiers s = new Soldiers(name, x, y);}}
}

运行结果如图:

JAVA面向对象程序设计——面向对象相关推荐

  1. C++面向对象程序设计 面向对象编程

    1.1 面向过程的编程风格与面向对象的编程风格 C语言是面向过程语言,也称为命令型语言,面向过程通常采用自顶向下设计,问题复杂时不断运用自顶向下设计(即函数分解法)直到容易处理.自顶向下设计优点是直观 ...

  2. 第三周《java语言程序设计——面向对象入门》学习总结

    1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词,如类.对象.封装等 答:面向过程编程的关注点是函数,而面向对象编程的关注点是先要有对象,然后调用对象的方法.而所谓对象是状态与行 ...

  3. python类与对象作业_荐富贵和你一起复习Python(第10篇)— 面向对象程序设计

    继续复习Python,今日复习 -- 面向对象程序设计,中间会有自己的心得体会,要是有什么错误或者补充可直接评论或者私信哟. 面向对象程序设计 面向对象程序设计的思想主要针对大型软件设计提出,能够很好 ...

  4. Java面向对象设计(面向对象)

    Java面向对象程序设计 面向对象 学习JAVA必须掌握类和对象,这样可以深层次理解Java这种面向对象的程序开发理念,从而更好更快地掌握Java这门语言的编程思想和方法 类 类保存着方法和属性,那么 ...

  5. Python 面向对象程序设计(一)

    面向对象程序设计 # 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法. #对象指的是类的实例.它将对象作为 ...

  6. python面向对象程序设计董付国ppt_(董付国)Python 学习笔记---Python面向对象程序设计(1)...

    面向对象程序设计 面向对象程序设计(Object Oriented Programming,OOP)主要针对大型软件设计而提出,使得软件设计更加灵活,能够很好地支持代码复用和设计复用,并且使得代码具有 ...

  7. C++面向对象(一):面向对象程序设计概述

    C++面向对象:面向对象程序设计概述 会有点长,不过读过就全学会喽!!!!!! 会有点长,不过读过就全学会喽!!!!!! 会有点长,不过读过就全学会喽!!!!!! 1.什么是面向对象程序设计 面向对象 ...

  8. c++陈维兴第三版3.35_C++面向对象程序设计教程第3版—陈维兴,林小茶课后习题答案...

    C++ 面向对象程序设计教程课后题答案 1 . 1 什么就是面向对象程序设计 ? 面向对象程序设计就是一种新的程序设计范型.这种范型的主要特征就是 : 程序 = 对象 + 消息 面向对象程序的基本元素 ...

  9. 用面向对象程序设计制作花语(flowerlanguage)

    目录 一.什么是面向对象程序设计 二.什么是类 1.什么是类的成员 (1)什么是属性 (2)什么是方法 三.什么是对象 四.讲解代码 1.定义类 2.调整对象的属性 3.定义函数 4.将self.wi ...

最新文章

  1. 把握数据,驱动未来 | 清华大学大数据研究中心2020年RONG奖学金答辩会成功举办...
  2. 新功能:阿里云负载均衡SLB支持HTTPS虚拟主机功能(SNI)
  3. 11.python并发入门(part8 基于线程队列实现生产者消费者模型)
  4. 服务器空岛怎么修改地形,迷你世界空岛地形码是什么 空岛地形码怎么输入[多图]...
  5. redis过期机制(官网文档总结)
  6. 关于分页插件PageHelper不起作用的问题
  7. 手撕设计模式之「单例模式」(详细解析)
  8. 接着做!一往无前!冲!就是我的信条!
  9. JDBC(九)DatabaseMetaData 数据库元数据
  10. 火狐浏览器title过长显示不全_浏览器渲染
  11. PNG免扣素材,快速提升你的画面设计感!
  12. IT168技术开发频道一周精选2007-11-30
  13. 图示SaaS:走向平台化,会产生什么变化?
  14. HashMap1.7和1.8头插入与尾插入的原因
  15. SpringCloud常见面试题总结一
  16. 北大青鸟 ASP.NET视频教程批量下载
  17. dixon matlab,磁共振Dixon技术原理及初代算法解析
  18. linux下安装MP4Box
  19. 风云滚滚唱英雄,云的江湖谁做主?
  20. 【校招篇】招聘季来临,金三银四你准备好了吗?

热门文章

  1. 解决饿了么ui再次点击弹出框红检验文字还出现问题
  2. 网站访问及DNS原理
  3. 什么是会话劫持及其工作原理?
  4. 计算机网络大作业——抓包和分析
  5. (七)Java游戏部署在Palm Os平台仿真器(Access)
  6. 烟台十四位拳师荣膺“十大拳师”称号
  7. 密码学安全性证明中的挑战者和攻击者
  8. 出境游:租WiFi设备和开通漫游 谁更靠谱?
  9. 成功解决 ValueError: Shape of passed values is (2, 3), indices imply (4, 3)
  10. java 图片加密