Java之面向对象编程,类与对象,参数传递及this关键字

第一部分:oop面向对象编程 思想 概念

前导:
面向对象(Object-Orientation,简称OO)是一种系统建模技术/编程思想
OO:面向对象,是一套集编程思想,方法,原则,模式,解决方案等为一体的编程模式。
OO的思想贯穿于整个软件开发的过程,比如需求分析,设计,编程,测试,升级等.

知识点速记:面向对象就是以类和类之间的关系去考虑 需求,编程…等。

1,oop解释:

按照面向对象的思想进行编程

2,明确的需求:

2.1:问题域:当前的业务作用范围。
问题域 : 校内
需求 : 点名
2.2:核心任务:最主要的功能

eg: 获得(5,10]的随机数,以面向对象的思想考虑.

Math.random();
0.0–>1.0
Math.random5+5;
Math.random
差+最小值;

package com.briup.ch5;
import java.util.Random;
public class Test5{
        public static void main(String[] args){
        	System.out.println(Math.random()*5+5);
        }

Random r = new Random();
r.nextInt(n);
0-n随机数

3,面向对象编程的特点:

抽象,封装,继承,多态

第二部分:面向对象编程的四个基础特点之抽象

1,抽象:

忽略掉一个对象或实体的细节而只关注其本质特征的过程。

2,抽象完成以后得到:

类–>所有Xxx的模板

第三部分:类和对象的概念

1,类

1.1:万物皆可以抽象:
问题领域中的实体和概念都可以抽象得到对应的类。

1.2:类是啥:类是java中一种复杂的数据类型

1.3:类的作用:
1.3.1:描述数据 : 属性
1.3.2:操作数据 : 方法

知识点速记:类使用成员变量描述数据(没有具体的值),使用方法操作数据。

1.4:类是元数据:描述数据的数据,因为数据在面向对象领域里以对象的形式存在,所以类是对象共有属性和方法的抽象描述。

2,对象

具有类中所有的属性和方法,
属性值可以不同,
方法实现可以不完全一样,

具有相同属性和行为的一组个体–>对象

2.1:类是模板,对象是该模板产生的一个个体。
2.2:个体的作用:
这个个体,可以【调用】自己的【方法】操作数据。
这个个体,可以给成员变量【赋值和取值】。

特殊对象 : 只用来存储有关联关系的数据javaBean 没有操作数据的方法
特殊对象 : 只用来操作数据的service 只有方法;
特殊对象 : 用来和数据库交互dao

小节:对象是在程序中可以使用的单位,对象中又包含很多数据,所以,java程序的运行是各种对象的相互交互作用。

第四部分:类中属性和方法的定义和使用

1,属性

1.1:在类中声明属性:
语法: 修饰符 类型 变量名
修饰符 类型 变量名 = 值;
eg: private String name = “小明”;
public int age;
protected boolean isonline;

public 公有的,都可以访问
protected 保护 : 只有子类能访问
private 私有的: 只有当前类内部能使用
不写 默认的: 只能在当前包中访问

注:类的成员变量可以不给初始值,会有默认值。

2,方法

2.1:声明:类中方法的声明:
语法: 修饰符 返回值类型 方法名(参数列表)
[throws 异常类型]{

//代码体
//如果返回值类型不为void那么必须有return 返回值类型的数据;
}
参数列表:用来声明变量,
声明的变量可以i在当前方法中使用
[没有赋值]

eg:
public void show(int age){
syso(“小明”+age+“岁了”);
}
解释:当前方法返回值为void ,所以代码体没有return语句
int age 这个是该方法的形式参数,作用范围只在当前方法有效。
2.2:使用:类中方法的使用(调用).
语法:对象.方法名(参数列表对应类型的值);
eg:
类 对象名 = new 类();
对象名.show(10);//①
那么执行①的时候 就会去执行show方法中的代码。
调用方法时候传入的10 是实际参数。
注意:对象调用方法,只有这个方法是属于该对象才能被调用到。

知识点速记:方法声明参数的是形式参数,调用方法时传入的参数是实际参数。

第五部分:参数传递

参数传递传的是当前值在内存中的【地址】。
先看内存图:
1, 学习java中内存机制:
2,对照ch05/ParamDemo1.java代码对照内存机制运行代码。

package com.briup.ch05;
/**
 * 用来学习内存图
 * */
public class ParamDemo1 {
	public String comm="这个是成员变量";
	
	public static void main(String[] args) {
		ParamDemo1 param = new ParamDemo1();
		param.show();
		System.out.println("结束");
	}
	public void show(){
		int num = 10;
		System.out.println("你好我是show : "+num);
		System.out.println("你好我是成员变量的值  : "+comm);
	}
}

3,参数传递:传基本数据类型 ch05/ParamDemo2.java

package com.briup.ch05;
/**
 * 用来学习参数传递<br>
 * 基本数据类型
 * */
public class ParamDemo2 {
	
	public static void main(String[] args) {
		ParamDemo2 param = new ParamDemo2();
		int abc = 10;
		param.show(abc);
		System.out.println("结束"+abc);//10
	}
	public void show(int num){
		num = 20;
		num++;
		System.out.println("你好我是show : "+num);
	}
}

4,参数传递:传字符串 ch05/ParamDemo3.java

package com.briup.ch05;
/**
 * 用来学习参数传递<br>
 * 字符串类型
 * */
public class ParamDemo3 {
	
	public static void main(String[] args) {
		ParamDemo3 param = new ParamDemo3();
		String name = "小明";
		param.show(name);
		System.out.println("结束"+name);//小明
	}
	public void show(String myname){
		myname = "tom123";
		System.out.println("你好我是show : "+myname);
	}
}

5,参数传递:传对象 ch05/ParamDemo4.java

package com.briup.ch05;
/**
 * 用来学习参数传递<br>
 * 对象
 * */
public class ParamDemo4 {
	
	public static void main(String[] args) {
		ParamDemo4 param =  0x11;
		Student studnet = 0x12;
		0x12.name = 0x66;
		param.show(0x12);
		System.out.println("结束"+0x12.name);//0x67
	}
	public void show(Student stu = 0x12){
		0x12.name = 0x67;
		System.out.println("你好我是show : "+0x12.name);
	}
}
class Student{
	String name;
}

6,参数传递:传数组 ch05/ParamDemo5.java

package com.briup.ch05;

import java.util.Arrays;

/**
 * 用来学习参数传递<br>
 * 数组
 * */
public class ParamDemo5 {
	
	public static void main(String[] args) {
		ParamDemo5 param = new ParamDemo5();
		int[] arr = new int[]{2,3,4,5};
		System.out.println("开始 : "+Arrays.toString(arr));
		param.show(arr);
		System.out.println("结束"+Arrays.toString(arr));
	}
	public void show(int[] num){
		num[2] = 10;
	}
}

第六部分:this关键字

参考 ch05/ThisDemo.java

1,解释:

当前对象

2,作用:

2.1:区分成员变量和局部变量
2.2:调用类中方法(什么权限的都可以调用)
2.3:调用构造器,注:this调用构造器不会重新创建对象

3,注意:

静态方法中不能使用this关键字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值