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