JAVA面向对象程序设计——面向对象
类与对象
概念:程序是为了模拟现实生活,解决现实中生活中的各种问题,现实中的每种实物都是独立的,每种独立的事物都可以用一种“类型”表示,这就是类。
类是一个概念,也可以说是模板,对象是类具体产生的一个看得见摸得着能用的实物。
比如手机是一个类,那么你现在手里拿着的手机就是一个具体的对象
将现实生活中的一类事物找到一个类型表示,这就是抽象,抽象出来的就是类。
类的定义语法:
[修饰符] 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面向对象程序设计——面向对象相关推荐
- C++面向对象程序设计 面向对象编程
1.1 面向过程的编程风格与面向对象的编程风格 C语言是面向过程语言,也称为命令型语言,面向过程通常采用自顶向下设计,问题复杂时不断运用自顶向下设计(即函数分解法)直到容易处理.自顶向下设计优点是直观 ...
- 第三周《java语言程序设计——面向对象入门》学习总结
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词,如类.对象.封装等 答:面向过程编程的关注点是函数,而面向对象编程的关注点是先要有对象,然后调用对象的方法.而所谓对象是状态与行 ...
- python类与对象作业_荐富贵和你一起复习Python(第10篇)— 面向对象程序设计
继续复习Python,今日复习 -- 面向对象程序设计,中间会有自己的心得体会,要是有什么错误或者补充可直接评论或者私信哟. 面向对象程序设计 面向对象程序设计的思想主要针对大型软件设计提出,能够很好 ...
- Java面向对象设计(面向对象)
Java面向对象程序设计 面向对象 学习JAVA必须掌握类和对象,这样可以深层次理解Java这种面向对象的程序开发理念,从而更好更快地掌握Java这门语言的编程思想和方法 类 类保存着方法和属性,那么 ...
- Python 面向对象程序设计(一)
面向对象程序设计 # 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法. #对象指的是类的实例.它将对象作为 ...
- python面向对象程序设计董付国ppt_(董付国)Python 学习笔记---Python面向对象程序设计(1)...
面向对象程序设计 面向对象程序设计(Object Oriented Programming,OOP)主要针对大型软件设计而提出,使得软件设计更加灵活,能够很好地支持代码复用和设计复用,并且使得代码具有 ...
- C++面向对象(一):面向对象程序设计概述
C++面向对象:面向对象程序设计概述 会有点长,不过读过就全学会喽!!!!!! 会有点长,不过读过就全学会喽!!!!!! 会有点长,不过读过就全学会喽!!!!!! 1.什么是面向对象程序设计 面向对象 ...
- c++陈维兴第三版3.35_C++面向对象程序设计教程第3版—陈维兴,林小茶课后习题答案...
C++ 面向对象程序设计教程课后题答案 1 . 1 什么就是面向对象程序设计 ? 面向对象程序设计就是一种新的程序设计范型.这种范型的主要特征就是 : 程序 = 对象 + 消息 面向对象程序的基本元素 ...
- 用面向对象程序设计制作花语(flowerlanguage)
目录 一.什么是面向对象程序设计 二.什么是类 1.什么是类的成员 (1)什么是属性 (2)什么是方法 三.什么是对象 四.讲解代码 1.定义类 2.调整对象的属性 3.定义函数 4.将self.wi ...
最新文章
- 把握数据,驱动未来 | 清华大学大数据研究中心2020年RONG奖学金答辩会成功举办...
- 新功能:阿里云负载均衡SLB支持HTTPS虚拟主机功能(SNI)
- 11.python并发入门(part8 基于线程队列实现生产者消费者模型)
- 服务器空岛怎么修改地形,迷你世界空岛地形码是什么 空岛地形码怎么输入[多图]...
- redis过期机制(官网文档总结)
- 关于分页插件PageHelper不起作用的问题
- 手撕设计模式之「单例模式」(详细解析)
- 接着做!一往无前!冲!就是我的信条!
- JDBC(九)DatabaseMetaData 数据库元数据
- 火狐浏览器title过长显示不全_浏览器渲染
- PNG免扣素材,快速提升你的画面设计感!
- IT168技术开发频道一周精选2007-11-30
- 图示SaaS:走向平台化,会产生什么变化?
- HashMap1.7和1.8头插入与尾插入的原因
- SpringCloud常见面试题总结一
- 北大青鸟 ASP.NET视频教程批量下载
- dixon matlab,磁共振Dixon技术原理及初代算法解析
- linux下安装MP4Box
- 风云滚滚唱英雄,云的江湖谁做主?
- 【校招篇】招聘季来临,金三银四你准备好了吗?
热门文章
- 解决饿了么ui再次点击弹出框红检验文字还出现问题
- 网站访问及DNS原理
- 什么是会话劫持及其工作原理?
- 计算机网络大作业——抓包和分析
- (七)Java游戏部署在Palm Os平台仿真器(Access)
- 烟台十四位拳师荣膺“十大拳师”称号
- 密码学安全性证明中的挑战者和攻击者
- 出境游:租WiFi设备和开通漫游 谁更靠谱?
- 成功解决 ValueError: Shape of passed values is (2, 3), indices imply (4, 3)
- java 图片加密