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

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

JavaSE类和对象

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

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

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

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

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

15、定义类时的注意事项:
  • 类里只允许定义属性和方法,否则报错。提示:不能写的代码,如:System.out.println(""); 打印 选择结构 循环结构等。

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

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

/**
 * @ClassName:Person2.java
 * @Description:返回值
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:DongGaoYun@qq.com
 * @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);
	}
}

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:DongGaoYun@qq.com
 * @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();
		}
	}
}
package org.gyun.method3;

import java.util.Scanner;

/**
 * 
 * @ClassName:TestTourist.java
 * @Description:测试方法
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:DongGaoYun@qq.com
 * @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("退出程序");
	}
}

18.2、用静态方法和静态属性实现需求的演示案例:
package org.gyun.method4;

import java.util.Scanner;

/**
 * @ClassName:Person2.java
 * @Description:调用方法
 * @Author:DongGaoYun
 * @URL: www.gyun.org
 * @Email:DongGaoYun@qq.com
 * @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();						
		}
	}
}

package org.gyun.method4;

import java.util.Scanner;

/**
 * 
 * @ClassName:TestTourist.java
 * @Description:测试方法 static
 * @Author:DongGaoYun 
 * @URL: www.gyun.org
 * @Email:DongGaoYun@qq.com
 * @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. 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(登录(包含拦截器)和注销

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青云交

优质创作不易,期待你的打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值