Java第六天:面向对象1.0

文章目录

    • 面向对象
        • 1. 生活中的面向对象
        • 2. 类和对象
        • 3. Java中定义类的格式
        • 4. Java中创建对象的方式
        • 5. 类对象内存分析图【重点】
        • 6. 构造方法【伪重点】

面向对象

1. 生活中的面向对象

吃饭:
	我们去吃老碗面
	1. 走到老碗面
	2. 找个位置,吼一嗓子,老板,一大份面
	3. 好嘞
	4. 吃
	5. 付钱
	6. 走人
	
	我们自己做老碗面
	1. 去超市,买锅碗瓢盆,面粉,调料,菜...
	2. 洗菜
	3. 和面
	4. 做卤
	5. 擀面
	6. 烧水
	7. 煮面
	8. 捞面上卤
	9. 吃
	10. 洗碗洗锅

喝点咖啡:
	我们去喝咖啡
	1. 找一个咖啡厅
	2. 找一个位置,打个响指,来一杯82年蓝山咖啡
	3. 一饮而尽
	4. 扭头就走
	5. 跑
	
	我们自己做咖啡
	1. 买一袋雀巢
	2. 冲一杯热水
	3. 一饮而尽

面向对象:
	找合适的人,做合适的事

面向过程:
	亲力亲为,自力更生,体验生活之疾苦

2. 类和对象

对象
人类 乔布斯,马云爸爸,麻花藤,雷布斯,任正非,王校长
狗类 王可可,忠犬八公,神犬小七,哮天犬
猫类 八九,加菲,悠米,黑猫警长,Tom,天猫
汽车类 未来我家的A4L 45 TFSI,福林假的奔驰大G
类:
	是一类事物的统称,带有事物的属性和行为
对象:
	唯一的,独立的,特殊的个体,是不可重复

3. Java中定义类的格式

/*
需要完成对应当前类的属性描述和行为描述
*/
class 类名 {
    // 属性描述 【成员变量 Field】
    // 行为描述 【成员方法 Method】
}
/*
1. 类名要求使用大驼峰命名法
2. 成员变量和成员方法要符合小驼峰命名法,并且见名知意,动宾结构
*/
class Person {
    // 成员变量 属性描述
	/**
	* 姓名描述,使用的数据是String类型字符串类型
	*/
    String name;
    
    /**
    * 年龄描述,选取int类型作为age属性的描述
    */
    int age;
	
    /**
    * 性别描述, 使用char类型描述gender属性
    */
    char gender;
    
    // 成员方法 行为描述
    /**
    * 睡觉行为描述
    */
    public void sleep() {
        System.out.println("说出来你可能不信,我被床封印了");
    }
    
    /**
    * 吃饭行为描述
    *
    * @param food 中午考虑吃什么
    */
    public void eat(String food) {
        System.out.println("中午吃" + food);
    }
    
    /**
    * 用生命在码代码描述
    */ 
    public void coding() {
        System.out.println("我要和代码长相厮守!!!");
    }
}

4. Java中创建对象的方式

/*
创建类对象
Scanner sc = new Scanner(System.in);
Scanner : 是一个类,Java中扫描器类
sc : "变量名" 对象名,类对象

new : 申请内存【堆区】空间的一个关键字
Scanner() : Constructor 构造方法,作用是和new关键字一起创建类对象使用
*/

/*
使用成员变量
int[] array = new int[10];
array.length 获取数组的容量属性
. 的
*/

/*
使用成员方法
sc.nextInt(); 通过Scanner类对象sc调用Scanner类内的nextInt()成员方法
sc.nextLine().charAt(0);
. 的
*/
public class Demo1 {
	public static void main(String[] args) {
		/*
		创建Person类对象
		*/
		Person p = new Person();
		
		System.out.println(p);
	}
}

5. 类对象内存分析图【重点】

Java第六天:面向对象1.0_第1张图片

6. 构造方法【伪重点】

/*
功能:
	初始化当前创建的类对象内存空间中的成员变量数据。【不常用】
构造方法格式:
	public 类名(初始化参数列表) {
		初始化赋值语句
	}
	有且只有构造方法可以使用类名!!!
*/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ZbJ3F3s-1583851790137)(.\img\Java编译器提供的无参数构造方法.png)]

/*
在Java开发中,如果一个类没有显式自定义构造方法,Java编译器会根据实际情况自动提供一个对应当前类的无参数构造方法,供程序开发使用。
*/
class Dog {
	// 成员变量
	String name;
	int age;
	char gender;
	
	// 无参数构造方法
	public Dog() {
		System.out.println("自定义无参数构造方法");
	}
	
	/* 需要对于name属性进行创建时初始化操作 */
	public Dog(String n) {
		// 这里使用的name就是在当前类内的成员变量name
		name = n;
		System.out.println("带有String类型参数的构造方法");
	}
	
	public Dog(String n, int a) {
		name = n;
		age = a;
		System.out.println("带有两个参数的构造方法");
	}

	public Dog(String name, int age, char gender) {
		name = name;
		age = age;
		gender = gender;
		System.out.println("带有三个参数的构造方法");
	}
	
	// 成员方法
	public void eat() {
		System.out.println("吃狗粮");
	}
	
	public void sleep() {
		System.out.println("我家豆豆睡觉打呼噜~~~");
	}
	
	public void game() {
		System.out.println("我家豆豆喜欢拖鞋~~~");
	}
}

public class Demo2 {
	public static void main(String[] args) {
		// 这里调用的是无参数构造方法
		Dog dog = new Dog();
		
		System.out.println(dog);
		System.out.println("name:" + dog.name);
		System.out.println("age:" + dog.age);
		System.out.println("gender:" + dog.gender);
		System.out.println();
		// 这里调用的是有个带有String类型参数
		// 用于初始化成员变量name属性的构造方法
		Dog dog1 = new Dog("骚杰");
		
		System.out.println(dog1);
		System.out.println("name:" + dog1.name);
		System.out.println("age:" + dog1.age);
		System.out.println("gender:" + dog1.gender);
		System.out.println();
		
		Dog dog2 = new Dog("宝哥哥", 17);
		
		System.out.println(dog2);
		System.out.println("name:" + dog2.name);
		System.out.println("age:" + dog2.age);
		System.out.println("gender:" + dog2.gender);
		System.out.println();
		
		Dog dog3 = new Dog("林妹妹", 16, '男');
		
		System.out.println(dog3);
		System.out.println("name:" + dog3.name);
		System.out.println("age:" + dog3.age);
		System.out.println("gender:" + dog3.gender);
		System.out.println();
	}
}

希望大家关注我一波,防止以后迷路,有需要的可以加我Q讨论互相学习java ,学习路线探讨,经验分享与java Q:2415773436

你可能感兴趣的:(java)