Java.面向对象

生活中什么是面向对象

面向对象: 想吃烤羊排

  • 去馕坑烤肉店
  • 两个人点一斤羊排
  • 等25分钟
  • 付款走人

面向过程:自己做烤羊排

  • 从JD上买羊排,洋葱,大葱,姜,烧烤料,孜然粉,辣椒面

  • 解冻羊排,准备辅料

  • 切羊排,腌制,撒盐,腌制30分钟

  • 烤箱预热5分钟,220度

  • 烤制 25分钟 15分钟翻面

  • 吃!!!蘸料~~~

  • 收拾东西

     从生活角度看面向对象:找合适的人,做合适事
     从生活角度看面向过程:亲力亲为,自力更生,体验人生疾苦
    

类和对象

类就是一类事物的统称,对当前事物的一些描述,属性描述和行为描述;对象就是具体化的,独立的唯一的特殊的个体。

类 :人、动物、汽车、电脑
对象:某个人、某种动物、某个汽车、某个电脑

Java中定义类的格式

/*
class ClassName {
// 属性描述
// 行为描述
}
要求:
1. ClassName要求符合大驼峰命名法,并且要做到见名知意!!!
2. 属性描述,是用于描述当前类拥有的一些特征,这里可以使用变量
	该变量有一个特定的名字【成员变量】 Field
3. 行为描述,是用于描述当前类可以做到一些事情,这里使用方法。
	该方法有一个特定的名字【成员方法】Method
*/

Java中定义类【成员变量】

/**
* 这里定义的是一个Person类
*
* @author Anonymous
*/
class Person {
// 属性描述,这里使用成员变量 Field
// 使用String类型来描述Person类的姓名属性
String name;
// 使用int类型数据描述Person类的年龄属性
int age;
// 使用char类型数据描述Person类的性别属性
char gender;
}

Java中定义类【成员方法】

// 使用方法描述Perosn类的吃饭行为
public void eat(String food) {
	System.out.println("吃" + food);
}
// 使用方法描述Person类的睡觉行为
public void sleep() {
	System.out.println("说出来你可能不行,是床先动的手~~~");
}
// 使用方法描述Person类的打豆豆行为
public void daDouDou() {
	System.out.println("吃饭,睡觉,打豆豆");
}
/*
特征:
1. 目前没有使用static关键字
2. 方法和之前所学方式形式一致,同样拥有三大元素 返回值,方法名和形式参数列表
	Shift + Alt + A
*/

类对象使用

Java中创建类对象的形式

/*
new 对象!!!
*/
// 获取一个扫描器的类对象!!!
Scanner sc = new Scanner(System.in);
/*
java.util.Scanner :数据类型,Scanner类型。创建的【变量】是Scanner的类对象,同时也是一个引用数据类型
sc :
类对象,变量 Scanner的类对象,sc是对象名
new :
申请内存的【堆区】空间,并且清理整个空间中的所有数据。
代码中,只有有new关键字,一定会使用到内存的堆区空间,并且是新的内存空间。
Scanner(System.in) :
1. 这里是一个方法,因为有小括号
2. 方法名字和类名一致
3. 该方法称之为构造方法,Constructor 构造方法

总结:

类名 对象名 = new 构造方法(所需参数);
*/
// 这里创建了一个Person类对象,对象名person
Person person = new Person();
System.out.println(person);
/*
* com.qfedu.a_object.Person@15db9742
* com.qfedu.a_object 完整的包名
* Person 数据类型,这里创建的对象是一个Person类对象
* @15db9742 当前类对象在内存空间的中首地址!!!十六进制展示方式
*/
Person person1 = new Person();
System.out.println(person1);
/*
* com.qfedu.a_object.Person@6d06d69c
* 发现第二个Person类对象 person1空间首地址 6d06d69c 和第一个对象不一致
* 这里就意味着两个对象的空间首地址不一致,不是同一个对象!!!
*/

Java中使用类对象调用成员变量

/*
int[] arr = new int[10];
获取数组的容量:arr.length
获取一个数组中【的】length属性
格式:
对象名.属性名/成员变量名;
. == > 的
可以操作取值或者赋值操作。
*/
// 通过Person类对象 person调用类内的成员变量
// 【赋值】Person类对象 person中对应的成员变量
person.name = "XX";
person.age = 16;
person.gender = '男';
// 【取值】展示Person类对象 person中保存的成员变
量数据
System.out.println("Name:" + person.name);
System.out.println("Age:" + person.age);
System.out.println("Gender:" +person.gender);

Java中使用类对象调用成员方法

/*
得到了一个Scanner类对象sc
Scanner sc = new Scanner(System.in);
使用过以下方法:
sc.nextInt();
sc.nextFloat();
sc.nextLine().charAt(0);
格式:类对象.方法名(必要的参数);
. ==> 的
*/

this关键字特征

class SingleDog {

	public SingleDog() {
		System.out.println("Constructor : " + this);
	}
	public void test() {
		System.out.println("Method Called : " + this);
	}
}
/*
 * this关键字特征:
 * this关键字表示调用当前方法的类对象,
 * 或者是当前构造方法中初始化的类对象
*/
public class Demo4 {

	public static void main(String[] args) {
	
	SingleDog singleDog = new SingleDog();
	System.out.println("Instance : " + singleDog);
	singleDog.test();
	
	}
}

方法的重载

  • 所有的方法名字都是一致的!!!
  • 所有的方法参数都是不一样的!!!
  • 同一个类内!!!

优点:

  • 简化了开发压力
  • 简化了记忆压力
  • 更快捷的调用方法,同时又满足了不同的情况!!!

规范:

重载情况下,在同一个类内,不可以出现相同方法名和相同参数数据类型的方法!!!

基本原理:
方法名一致的情况下,通过形式参数列表数据类型的不同来选择不同的方法行。
反射 ==>Constructor Method

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值