Java笔记 面向对象(2020.5.13)

(如有问题,欢迎各位大佬批评指正)

面向对象 (建议收藏)

面向对象和面向过程的区别

  • 面向过程:强调步骤
  • 面向对象:强调对象

面向对象的特点

面向对象思想是一种个符合我们思考习惯的思想,可以将复杂的事情简单化,并将我们从执行者变成指挥者

面型对象的三大特征

  • 封装
  • 继承
  • 多态

类与对象

什么是类
  • 类:是一组相关属性和行为的集合。可以看做是一类事物的模板,使用事物的属性和行为特征来描述改类事物
    • 属性:是该事物的状态信息
    • 行为:是改事物能够作什么
类与对象的关系
  • 类是对一类事物的描述,是抽象的
  • 对象是类事物的实例,是具体的
  • 类是对象的模板,对象是类的实例
如何定义一个类

事物和类的对比
现实世界的一类事物:

  • 属性:事物的状态信息
  • 行为:事物能够做什么
    java中用class描述事物也是如此
  • 成员变量:对应事物的属性
  • 成员方法:对应事物的行为
类的定义格式
public class ClassName {
	//成员变量
	//成员方法
}
  • 定义类:就是定义类的成员,包括成员变量和成员方法
    • 成员变量:和以前定义变量几乎是一样的,只不过是位置发生了变化,在类中,方法外
    • 成员方法:和以前定义方法几乎一样,只不过把static去掉
定义一个类
package md.day01;

/*
定义一个类,用来模拟“学生”事物,其中两个组成部分

属性(是什么):
    姓名
    年龄
行为(干什么)
    吃饭
    睡觉
    学习

对应到java类当中

成员变量(属性):
    String name; //姓名
    int age; //年龄
成员方法(行为)
    public void eat() {} //吃饭
    public void sleep() {} //睡觉
    public void study() {} //学习

注意事项:
    成员变量是直接定义在类当中的
    成员方法不要写static关键字
 */
public class Student {
    //成员变量
    String name;
    int age;
    //成员方法
    public void eat() {
        System.out.println("吃饭方法");
    }

    public void sleep() {
        System.out.println("睡觉方法");
    }

    public void study() {
        System.out.println("学习方法");
    }
}

成员变量和局部变量的区别

  1. 定义位置不一样

    局部变量:方法的内部
    成员方法:方法外部,直接写在类中

  2. 作用范围不一样

    局部变量:只有方法中可以使用,出了方法就不能再用了
    成员变量:整个类全部都可以使用

  3. 默认值不同

    局部变量:没有默认值,如果需要必须进行手动赋值
    成员变量:有默认值(默认值,可以自己打印试一下)

  4. 内存位置不一样

    局部变量:位于栈内存
    成员变量:位于堆内存(对于java内存可以参考我的另一博文 java数组和内存)

  5. 生命周期不同

    局部变量:随着方法进栈而诞生,随着方法出栈而消失
    成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失

匿名对象

	new NiMIng();
匿名对象作为返回值和参数
package md.day05;

import java.util.Scanner;

public class demo05 {
    public static void main(String[] args) {
        method(new Scanner(System.in));

        Scanner num1 = methods();
        int num = num1.nextInt();
        System.out.println("输入的数字是:" + num);

    }

    //匿名对象作为参数
    public static void method(Scanner sc){
        int num = sc.nextInt();
        System.out.println("输出的数字为:" + num);
    }

    //匿名对象作为返回值
    public static Scanner methods(){
        return new Scanner(System.in);
    }
}

你可能感兴趣的:(Java)