1.3 面向对象

一、问题

  1. 什么叫面向对象?
  2. 面向对象的特征有哪些?
  3. 什么叫类?
  4. 如何定义一个类?
  5. 如何创建一个对象?

看完本篇至少自己心中有一份属于自己的答案~~

二、面向对象的概述

在这里插入图片描述

一、类的定义

类是一种复杂的数据类型
它是将数据和与数据相关的操作封装在一起的集合体

二、类与对象的关系

1、类为对事物的描述,具有属性和行为;
2、对象是该类事物创建的实体,通过对象调用。
3、一切事物皆对象,在Java中描述事物通过类的形式体现,类是具体事物的抽象。

三、类的组成

类分为两部分:类的声明和类的主体。

<类 声明>
{
<类主体>
}

类主体部分是由成员变量和方法组成,不可以在类中直接写表达式语句,它必须放到一个方法里。

class Circle{                   //类声明,类的命名第一个字母大写以便与对象区别

	int r;					    //成员变量,或称为类的属性
	……
	void print(){          	    //成员方法
	
		int r=3;             	//局部变量
		System.out.println(r);
	}

}
//整个大括号里的称为类的主体部分

四、对象的概念

对象 是 类的实例化

public static void main(String [] args){
	Circle circle=new Circle ();			//实例化一个circle 对象
	circle.r=1;
	...
	circle.print();                         //对象的方法调用
}

五、 创建对象的格式

类名 对象名 ==> Circle circle=new Circle ();

六、对象的使用

circle.r=1;                              // 对象的属性调用
circle.print();                          //	对象的方法调用

总结:简简单单的总结了一下面向对象的基本概念,实际上自己也知道面向对象的思想绝非三言两语就能说明白的,在此只是为让自己以最简单的门槛来入门,为的是以后探索更深邃的内容~~哈哈
在这里插入图片描述

还有要补充的内容:

1、main()方法介绍
3、static关键字
4、成员变量和局部变量、实例变量和类变量(自己老傻傻的分不清)
5、this关键字介绍
6、面向对象的三大特征 :封装,继承,多态
7、方法的重载的概念

一、main() 方法

public class HelloWorld {
    public  static  void  main( String [] arg){        // main 方法
        System.out.print("hello 九九乘法表");
        System.out.print("\n");
        for(int i=1;i<=16;i++){
            for (int j=1;j<=i;j++){
                System.out.print(i+"*"+j+"="+i*j+"    ");
            }
            System.out.print("\n");
        }
    }
}

main()方法为静态的,在java虚拟机中执行main()方法时不需要创建main()方法所在类的实例就可调用,因为有static修饰。

总结:

其实main方式和普通的静态方法没有太大的区别,唯一的区别就是它被JVM选择做了Java应用程序的入口。

二、static关键字

使用static修饰的成员变量为静态变量;

用static修饰的类,为静态类,
用来修饰方法,则为静态方法。

静态变量是归类所有,静态变量直接通过类调用,而不用实例化对象。
静态方法也是用类名直接调用的。静态方法只能操作静态变量而不能使用实例变量。

静态随类的加载而加载,优先于对象存在。静态方法中不能用this,super。

三、变量

(1)、成员变量和局部变量区别:

成员变量:

1、成员变量定义在类中,在整个类中都可以被访问。

2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

3、成员变量有默认初始化值。

局部变量:

1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

3、局部变量没有默认初始化值

   在使用变量时需要遵循的原则为:就近原则
   
   首先在局部范围找,有就使用;接着在成员位置找。

(2)、成员变量和类变量的区别:

先看一张图
在这里插入图片描述

1、两个变量的生命周期不同

  成员变量随着对象的创建而存在,随着对象的回收而释放。

  静态变量随着类的加载而存在,随着类的消失而消失。

2、调用方式不同

  成员变量只能被对象调用。

  静态变量可以被对象调用,还可以被类名调用。

3、别名不同

  成员变量也称为实例变量。

  静态变量也称为类变量。

4、数据存储位置不同

  成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

  静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

下面是代码说明

class MyAdd {
    int count = 0;			//成员变量(实例变量)计数器
    static int sum = 0;		//静态变量(类变量)  计数器
    String name;

    // 构造函数
    MyAdd(String name){
        this.name = name;
    }

    public void myAddMethod() {
        count++;
        System.out.println(name+"调用成员变量后的值:"+count);
    }

    public void staticAddMethod() {
        sum++;
        System.out.println(name+"调用类变量后的值:"+sum);
    }


}

public class HelloWorld {
    public  static  void  main( String [] arg){
        MyAdd add1 = new MyAdd("add1");
        MyAdd add2 = new MyAdd("add2");
        add1.myAddMethod();
        add2.myAddMethod();
        add1.myAddMethod();
    }
}

运行结果:

add1调用成员变量后的值:1
add2调用成员变量后的值:1
add1调用成员变量后的值:2

总结 : 成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

而,

public class HelloWorld {
    public  static  void  main( String [] arg){
        MyAdd add1 = new MyAdd("add1");
        MyAdd add2 = new MyAdd("add2");
        add1.staticAddMethod();
        add2.staticAddMethod();
        add1.staticAddMethod();
    }
}

运行结果:

add1调用类变量后的值:1
add2调用类变量后的值:2
add1调用类变量后的值:3

总结 :静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

在这里插入图片描述

四、this关键字介绍

this代表使用该方法的当前的对象,可用于实例方法或者构造方法中。

void setAge(int age){
 this.age = age;
} 
// 构造函数中
Person(String name, int age){
 this.name = name;
 this.age = age; 
}

感兴趣的可以点我了解更多哦~

总结:以上都是概念性的东西,个人认为理解的还不是很清楚,不过没关系啦,佛经也不是一天能参悟的了的,持之以恒的去看去想,然后加之实践会有大的改变的。

猜你喜欢

转载自blog.csdn.net/osdfhv/article/details/84036376
1.3