首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Java入门-Java学习路线课程第七课:类和对象

  • 25-02-21 23:40
  • 3358
  • 6629
blog.csdn.net

本博客地址 | GitHub | 更多资源免费下载

JavaSE类和对象

文章目录

          • 1、万物皆对象
          • 2、那么什么是类
          • 3、什么是对象
          • 4、什么是属性 什么又是方法呢
          • 5、类与对象的关系是什么
          • 6、Java是面向对象的语言
          • 7、什么是面向对象
          • 8、面向对象思想特点
          • 9、面向对象开发
          • 10、面向对象设计
          • 11、定义类有三步:
          • 12、方法的构成:
          • 13、对象怎么创建(具体见演示案例)
          • 14、类的定义演示案例:
          • 15、定义类时的注意事项:
          • 16、有返回值和无返回值演示案例:
          • 17、有返回值和无返回值的场景(根据需求):
          • 18、实现以下需求:
          • 18.1、用创建对象方式实现需求的演示案例:
          • 18.2、用静态方法和静态属性实现需求的演示案例:

1、万物皆对象
  • 世界由万物组成,即各种各样的对象组成。

  • 看看周围,你会发现很多对象,比如:老师、同学、电脑、桌子、椅子等。师生属于人类,电脑和桌椅属于办公用品。

  • 分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类

2、那么什么是类
  • 具有相同特性(数据元素)和行为(功能)的一组对象的集合

  • 换句话说:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。N多对象,抽取出来共性的属性和方法,就形成了类

  • 因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

class Person{ }//这个是类
  • 1
3、什么是对象
  • 用来描述客观事物的一个实体,它由一组属性和方法构成
Person person= new Person();//类的实例化就是对象
  • 1
4、什么是属性 什么又是方法呢
  • 属性:是什么(共有特征)
    • 如:学生有姓名、学号、年龄、体重
  • 方法:能干什么(行为)
    • 如:学生:思考问题、学习java编程

在这里插入图片描述

5、类与对象的关系是什么
  • 类与对象的关系是抽象和具体的关系。

    • 类是对象的类型(抽象),类是抽象的概念,仅仅是个模板。比如:“人”类
    • 对象是类的实例(具体),即对象是一个你能够看得到、摸得着的具体实体

在这里插入图片描述

6、Java是面向对象的语言
  • 所有Java程序都以类class为组织单元
  • 关键字class定义自定义的数据类型
7、什么是面向对象
  • 强调对象,使用对象,这里特指对象如:洗衣机
  • case: 洗衣服
    • 面向对象:脱下衣服–>打开全自动化洗衣机—>放进衣服 -->打开开关–>晾晒衣服
8、面向对象思想特点
  • 更符合我们思想习惯的思想
  • 可以将复杂的事情简单化
  • 可以将我们从执行者变成了指挥者
9、面向对象开发
  • 就是不断的创建对象,使用对象,指挥对象做事情。
10、面向对象设计
  • 其实就是在管理和维护对象之间的关系。
11、定义类有三步:
  • 定义类名。首字母大写,驼峰命名,要有意义
  • 定义属性。首字母小写,驼峰命名,要有意义
  • 定义方法。首字母小写,驼峰命名,要有意义
12、方法的构成:
修饰符 返回值(有返回值和无返回值) 方法名(){
   //方法内容 执行代码块
}
  • 1
  • 2
  • 3
13、对象怎么创建(具体见演示案例)
  • 第一步:引包
  • 第二步:实例化对象 类名 对象名=new 类名();
  • 第三步:使用 引用对象名.属性 或者 引用对象名.方法。
14、类的定义演示案例:
package org.gyun.object1;

import org.gyun.object2.Person2;

import sun.net.www.content.text.plain;

/**
 * 
 * @ClassName:Person.java
 * @Description:类的定义
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-17 下午2:40:33
 * @Version:1.0
 * 
 *              定义类有三步: 1.定义类名。首字母大写 2.定义属性。首字母小写 3.定义方法。首字母小写
 *              注意:类里面只有这二个要素,即属性和方法(两个要素不是必须同时存在
 *              ,也可以都不存在,也可以同时存在)。也就是说必须只有这两个要素,否则报错
 *              如:System.out.println("");打印 选择结构 循环结构
 */
public class Person {
	// 1.属性
	String name;
	String sex;
	static int age;

	// 2. 方法
	public void think(String name) {
		Person2 p2=new Person2();
		int a=1,b=1;
		//调用方法(后面详细讲解)
		p2.getMethod2(a, b);
		this.name=name;
		System.out.println(name+"是一个很爱学习的人,他还关注了微信公众号:JavaForum ,能获取更多的Java免费资料");
	}
	//主方法
	public static void main(String[] args) {
		// 创建对象Person
		//类名 对象名=new 类名();
		System.out.println(Person.age);
		Person p=new Person();
		p.think("李四");
		System.out.println(p.name);
		// 创建对象Student
/*		Student s = new Student();//类就是模板
		Student s2 = new Student("张卓");//类就是模板
		try {
			// 调用方法
			//s.testname();
			//调用属性
			s.name="张三";
			Student s3 = new Student(s.name);//类就是模板
		} catch (Exception e) {
			// 抛出异常
			e.printStackTrace();
		}*/
	}
}

/**
 * 
 * @ClassName:Person.java
 * @Description 学生类
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-17 下午2:50:01
 * @Version:1.0
 */
class Student {
	//1.属性
	String name;
	int age;
	//无参构造方法
	public Student(){
		int a=1;
		int b=1;		
		System.out.println(a+b);
	}
	public Student(String name){
		//声明变量
		int a=100;
		int b=100;
		//打印
		System.out.println(name+"的总成绩为:"+(a+b));
	}
	// 2.方法-打印需求:
	public void testname() throws Exception {
		System.out.println("欢迎大家!");
		// do while无限循环
		do {
			System.out.println("你好,我好,全都好!");
		} while (true);
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
15、定义类时的注意事项:
  • 类里只允许定义属性和方法,否则报错。提示:不能写的代码,如:System.out.println(""); 打印 选择结构 循环结构等。

  • 类里的属性和方法,既可以都不存在(没有意义,不推荐),也可以同时存在或互相存在。

16、有返回值和无返回值演示案例:
package org.gyun.object2;

/**
 * @ClassName:Person2.java
 * @Description:返回值
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-17 下午4:24:09
 * @Version:1.0
 * 定义类有三步: 1.定义类名。首字母大写 2.定义属性。首字母小写 3.定义方法。首字母小写
 */
public class Person2 {
	// 返回值的两种情况:
	// 有返回值 类的数据类型 数组和接口 基本数据类型
	// 无返回值 void
	//1.属性
	String name;
	int age;
	//方法
	public void print() {
		System.out.println("自我介绍一下:我叫" + name + ",我的年龄为:" + age+"岁");
	}

	// 加法,返回一个a+b后的值
	// 有返回值的话,要有return
	//a,b是形参(后面详细讲解)
	public int getMethod(int a,int b) {
		//声明变量
		int aa=22;
		int bb=33;
		//调用方法
		numMethod(aa, bb);
		getMethod2(a,b);
		return a + b;
	}
	//方法
	public int getMethod2(int a,int b) {
		//声明变量
		int aa=22;
		int bb=33;
		getMethod(a,b);
		numMethod(aa, bb);
		return a + b;
	}
	//主方法
	public static void main(String[] args) {
		// 创建对象
		Person2 p = new Person2();
		//给属性赋值
        //引用类的属性:对象名.属性
		p.name = "李樱";
		p.age = 16;
		//调用方法
		//引用类的方法:对象名.方法名()
		p.print();
        //声明变量
		int a = 10;
		int b = 20;
		//a,b是实参
		//引用类的方法:对象名.方法名()
		int num = p.getMethod(a,b);
		int num2 = p.getMethod(2,4);
		System.out.println(num);
		System.out.println(num2);
		//有返回值和无返回值的场景:
		//有种情况,需要返回数据进行再次运算,或再次加工,那么就需要返回值
		//如果只需要打印或简单的需求,不需要再次使用的,就无须返回值。
		//最后还是根据需求。
		
		//两个数的交换
		int m=1;
		int n=2;
		numMethod(m, n);
		int aa=22;
		int bb=33;
		numMethod(aa, bb);//作业怎么返回值 aa bb出来		
	}
	//方法
	private static void numMethod(int m, int n) {
		int temp;
		temp=m;
		m=n;
		n=temp;
		System.out.println(m+":"+n);
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
17、有返回值和无返回值的场景(根据需求):
  • 需要返回数据进行再次运算,或再次操作,那么就需要返回值

  • 只需要打印简单的需求或不需要返回数据再次使用的,就无须返回值。

18、实现以下需求:
  • 游客根据年龄购买门票。如游客年龄在16-60岁 收费20元,其它年龄段免票
  • 如图

在这里插入图片描述

18.1、用创建对象方式实现需求的演示案例:
package org.gyun.method3;

import java.util.Scanner;

/**
 * @ClassName:Person2.java
 * @Description:调用方法 创建对象调用方法
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-17 下午4:24:09
 * @Version:1.0
 */
public class Tourist {
	//1.属性
	//声明变量
	String name;
	int age;
	//2.方法
	public void getMethod() {
		// 创建对象三步走:引包、创建对象、使用输入数据
		Scanner input = new Scanner(System.in);
		/*System.out.print("请输入姓名:");
		name = input.next();*/
		if(!"n".equals(name)) {
			// 如果这个游客在16-60岁 收费20元
			// 如果这个游客在大小16大于60岁 免费
			//友情提示
			System.out.print("请输入年龄:");
			age = input.nextInt();
			//判断
			if (age >= 16 && age <= 60) {
				System.out.println(name + "的年龄为:" + age + ",门票价格为:20元");
			}else{
				System.out.println(name + "的年龄为:" + age + ",门票免费");
			}
			System.out.println();//换行打印
			//友情提示
			System.out.print("请输入姓名:");
			name = input.next();
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
package org.gyun.method3;

import java.util.Scanner;

/**
 * 
 * @ClassName:TestTourist.java
 * @Description:测试方法
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-17 下午5:21:36
 * @Version:1.0
 */
public class TestTourist {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//实例化对象
		Tourist t=new Tourist();
		//创建Scanner对象
		Scanner input = new Scanner(System.in);
		//友情提示
		System.out.print("请输入姓名:");
		//引用类的属性:对象名.属性
		t.name = input.next();
		//循环判断
		do{
			//引用类的方法:对象名.方法名()
			t.getMethod();
		}while(!"n".equals(t.name));
		//结束程序
		System.out.println("退出程序");
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
18.2、用静态方法和静态属性实现需求的演示案例:
package org.gyun.method4;

import java.util.Scanner;

/**
 * @ClassName:Person2.java
 * @Description:调用方法
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-17 下午4:24:09
 * @Version:1.0
 * 定义类有三步: 1.定义类名。首字母大写 2.定义属性。首字母小写 3.定义方法。首字母小写
 */
public class Tourist {
	//1.属性
	//声明变量
	static String name;
	static int age;
	//2.方法
	public static void getMethod() {
		// 创建对象三步走:引包、创建对象、使用输入数据
		Scanner input = new Scanner(System.in);
		//判断是否结束程序
		if(!"n".equals(name)) {
			// 如果这个游客在16-60岁 收费20元
			// 如果这个游客在大小16大于60岁 免费
			//友情提示
			System.out.print("请输入年龄:");
			age = input.nextInt();
			//判断
			if (age >= 16 && age <= 60) {
				System.out.println(name + "的年龄为:" + age + ",门票价格为:20元");
			}else{
				System.out.println(name + "的年龄为:" + age + ",门票免费");
			}
			System.out.println();//换行
			//友情提示
			System.out.print("请输入姓名:");
			name = input.next();						
		}
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
package org.gyun.method4;

import java.util.Scanner;

/**
 * 
 * @ClassName:TestTourist.java
 * @Description:测试方法 static
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:[email protected]
 * @QQ:1050968899
 * @WeiXin:QingYunJiao
 * @Date:2019-9-17 下午5:21:36
 * @Version:1.0
 */
public class TestTourist {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Tourist t=new Tourist();
		Scanner input = new Scanner(System.in);
		System.out.print("请输入姓名:");
		//t.name = input.next();
		Tourist.name=input.next();
		do{
			//t.getMethod();
			Tourist.getMethod();
		}while(!"n".equals(t.name));
		System.out.println("退出程序");
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

———— 精 选 文 章 ————
  1. Java入门-Java学习路线课程第一课:初识JAVA
  2. Java入门-Java学习路线课程第二课:变量与数据类型
  3. Java入门-Java学习路线课程第三课:选择结构
  4. Java入门-Java学习路线课程第四课:循环结构
  5. Java入门-Java学习路线课程第五课:一维数组
  6. Java入门-Java学习路线课程第六课:二维数组
  7. Java入门-Java学习路线课程第八课:方法和方法重载
  8. Java入门-Java学习路线扩展课程:equals的使用
  9. Java入门-Java学习路线课程面试篇:取商 / 和取余(模) % 符号的使用
  10. Java进阶-Java学习路线课程第一课:Java集合框架-ArrayList和LinkedList的使用
  11. Java进阶-Java学习路线课程第二课:Java集合框架-HashSet的使用及去重原理
  12. Spring框架-Java学习路线课程第一课:Spring核心
  13. Spring框架-Java学习路线课程:Spring的扩展配置
  14. Springboot框架-Java学习路线课程:Springboot框架的搭建之maven的配置
  15. java学习:在给学生演示用Myeclipse10.7.1工具生成War时,意外报错:SECURITY: INTEGRITY CHECK ERROR
  16. 使用jquery发送Ajax请求的几种异步刷新方式
  17. idea Springboot启动时内嵌tomcat报错- An incompatible version [1.1.33] of the APR based Apache Tomcat Native
  18. 一个简单的SSM框架Demo(登录(包含拦截器)和注销

更多免费资源请关注微信公众号:

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览150366 人正在系统学习中
注:本文转载自blog.csdn.net的青云交的文章"https://blog.csdn.net/atgfg/article/details/101017171"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top