Java学习-----面向对象

“面向对象”的编程思想

那么,何为面向对象的编程思想呢

首先哈,这东西,不是你一下子就能顿悟滴,而是渐悟出来滴。可能大家听完这个后便觉得自己明白了,但是回头一想,好像什么都妹明白,一直处于这种状态。直到你不断的去写这个Java代码,在这个写的过程当中,你便会渐渐领悟了。你就会发现,原来的你写的那种Java代码就是面向对象编程。
 
说到这个面向对象哈,就要再来谈谈面向过程,咱们做个比较。

面向对象(OOP)与 面向过程(POP)

咳咳,这两者呢,都是一种编程思想。但是面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。而面向对象呢,是将功能封装进对象,强调具备了功能的对象。
 
举个例子哈。 我们用两种思想来编写 打球
面向过程:那我们只需要编写出打球的动作,这个打球是如何完成的。
面向对象:我们便需要考虑这个打球的动作是归属于谁的,所以我们就会出现一个人的对象,人的对象中包含 了有个打球的动作。
 
我知道你肯定又要问,这样编写好处在哪里,这里咋就不说了,以后你自然就会明白。

面向对象的三大特性

那就是 封装、继承、多态
至于其意义,后面会详细说明哈!

Java类以及类的成员

  • 现实世界万事万物都是由分子和原子构成的,同样呢,Java代码世界,也是由许许多多个不同的类class组成的。
  • 现实中这些个分子、原子都是由原子核、电子构成的。那木呢,Java中的类class也是由两种成员构成的,分别是:属性、行为

属性(Field):对应类中的成员变量。
行为(method):对应类中的成员方法。(也是大家经常写的函数,这个函数就是方法,也称行为)

那木,我们要如何以面向对象的思想来编写一个Java类呢,这里我们就举个例子。
比如: 英俊的我要开车去网吧!
咳咳,我们可以看出来哈,这句话中有两个类class,一个是我 ,一个是车

//首先我们写   我   类{
	//这句话中,我有会开车这个动作,还有就是我的形容 是英俊的,那木我们就得定义一个属性一个方法。
	String  模样 = “英俊的” ;
	开车(网吧){  //里面是要有个参数的,就是我们开车要去哪里
		......
    }
}
//然后就是   车   类{
	//车的话,那必须要能启动、前进、停止、倒车。对吧!然后我们就写四个方法,车就能动了。
	启动(){
		......
 	}
 	停止(){
		......
 	}
 	前进(){
		......
 	}
 	倒车(){
		......
 	}
}

这样子,就能够完成 英俊的我要开车去网吧! 这个事务了。

可能你不大喜欢看中文的哈,想看完整的代码哈!行,安排!
接下来我们完完全全来建立一个 的类

/**  这是文档注释哈!要养成经常打注释的喜欢哈。
 * 对人的类进行一次完整的编写。
 * @author Jun木~
 *
 */
public class Person {    //注意哈!类以及接口必须要首字母大写哈!
	//我们要知道名字吧,还有年龄,有木有结婚呀啥的,这些,就是属性
	String name ;  //在类下定义的变量就叫成员变量
	int age;
	boolean married; //这是布尔类型定义,参数只有 是 或者 否 !
	
	//然后就是方法,我们就写个显示名字,和获取年龄吧!
	public void showNmae() {		
	//注意:方法和变量如果有两个单词以上的话,从第二个单词开始就要首字母大写
	int i;    //在类的方法中定义的变量,叫做局部变量
		System.out.println(name);
	}
	
	public int getAge() {			
	//注意:当一个方法有返回值的时候,方法类型就要写数据类型,如何没有返回值,就写void
		return age;
	}
}

咳咳,这样子,一个 人的类 就这样建立好的了。
这里哈!再教你一个输出快捷键,就是在eclipse中 输入 sysou 然后再按下 Alt + / 就能够快速的输出 System.out.printfln();
咳咳,记得亲自尝试哈,看是没有用滴。好滴,接下来就是实例化啦!

Java实例化

什么叫做实例化呢?
咳咳,你可能听说过这么一个段子,就是有Java程序员听有人在说没有对象,然后 这个程序员就说,不就是对象蛮,new一个不就有了。 这里的new就是我们要讲的Java实例化,也叫作 创建一个对象。
这个实例化呢,感觉起来和C语言里面的函数调用有点像,但又不完全是。
首先呢, 我们需要一个类来进行实例化,我们就用上面那个 人的类 哈!

在这里插入图片描述

Person类实例化解释

  • 首先,我们使用Person p1 = new Person(); 创建一个对象,我们这个对象的名字呢就叫p1;
  • 由上面的Person类,我们可以知道里面的属性有name、age;方法有showName、getAge;
  • 使用p1.name = “阿木木”; 所以p1对象的name属性就叫做 阿木木 ,并使用showName将其打印出来
  • 然后定义一个变量i 来获得p1对象的年龄,但为什么是 0 呢,因为在我们写Person类的时候并没有给年龄赋值,那么整形变量的默认值就是 0 ;这个默认值我觉得还是有必要写下的;安排!

当类成员变量没赋值时默认值

数据类型 默认值
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0D
char ‘\u0000’,也就是空,显示效果就是一个空格
boolean false
引用类型String null

匿名对象

那木,啥叫做匿名对象呢,还是按照上面Person类做例子。
我们前面实例化的时候,是创建了一个对象,他的名字叫做 p1 ;相当于给对象起了一个名字,那木匿名对象呢,就是没有这个名字,使用时,是直接调用里面的方法,例如:new Person().showName(); 这样子,就是直接使用对象。
那木我们啥情况会用到匿名对象呢?
一、当这个类的方法我们只需要使用一次,然后以后就再也不管了,我们就适合使用匿名对象。
二、还有一种呢,就是,我们经常将匿名对象作为实参传递给一个方法调用。

害,还是举个例子, 我们要计算圆的面积 这个时候我们只需要调用一次就行了。
首先我们先写一个圆的类;

public class circle {//只计算圆的面积,我们就只要写一个方法就好了;
	public double area(double r) {//r为半径,数据类型都是double
		return 3.14 * r * r;
	}
}

然后,定义一个变量s,直接通过匿名对象的方式调用这个方法,再用是记住,然后返回出来。
在这里插入图片描述

方法的重载

啥是方法的重载呢?
就是哈,在一个类里面出现了多个同名的方法,在一个类里面共存了。等等,等等,这个时候你一定会问我了,同一个类里面怎么可能会出现同名字的方法呢,在这里哈,本木木就告诉你哈,在Java里面是可行滴,但是有一个前提,里面的参数的个数或者数据类型,是不可以相同的。
这样的同名方法叫做方法的重载。
 
害,可能你还是一蒙一蒙滴,举个例子吧!

public int add(int a, int b) {
		return a + b;
}
public double add(int a, double b) {
	reutrn a + b;
}
public double add(int a, double b, int c) {
	reutrn a + b + c;
}
//就想这个样子,他们是可以共存在一个类里面的,这也是和C语言的区别吧。
//开始的时候本木木也方了,毕竟木木也是C语言上来的

好啦好啦,今天就先到这吧!!
记得哈,看是学不会滴,只有亲自动手去实验,出结果,那才是自己的。

改革尚未成功,同志仍需努力!!!
发布了16 篇原创文章 · 获赞 26 · 访问量 1131

猜你喜欢

转载自blog.csdn.net/qq_43514659/article/details/104732492