一、面向对象
嗯?还没有对象?来帮你new一个,嘿嘿嘿嘿,开玩笑呢!
面向对象的简单理解,就是给你一个菜谱,你对着菜谱做菜,你今天做,明天做,后天做,只要是按着这个菜谱来做的,就是按照他的规则来,菜谱就是模板,而做出来的菜就是实例,实例是按照模板出来的,不管如何,他总是和模板相似,这其实就是面向对象的一个过程。而面向对象的三大基本特点:封装、继承、多态,我们来一一理解。
- 封装
- 简单来讲,封装就是一个模板,菜谱就是,它是高级大厨师封装出来的模板,给不会烧菜的小白做参考
- 继承
- 这点,可以看作是你用菜谱做菜,不管如何,你要用到里面加调料的步骤,这就是继承
- 多态
- 这个最好理解,就是你按照i菜谱做菜,可能真的是小白,第一次勉强做出来了,第二次…第无数次,可能每一次都不一样,而菜谱确是没有变的,这就是多态。
二、一个小小的尝试
- 创建一个菜谱类Recipe,同时具有一些属性,分别为菜名
name
和菜的内容content
1
2
3
4class Recipe{
public String name;
Public String content;
} - 创建一个实例,炒菜(比如:xxx)
1
Recipe xxx = new Recipe();
三、关键内容
刚刚我们尝试了一下,创建一个菜谱类,并包含两个字段,可以简单理解为类的属性,这里我们介绍定义在类中的方法,其实可以简单理解为C语言中的函数(ps:说的不是很谨慎,大概可以这样理解)
方法
1
2
3
4修饰符 方法返回类型 方法名(方法参数列表) {
若干方法语句;
return 方法返回值;
}关于修饰符,之前有提到过的
public 公共的 允许外部调用
private 私有的 不允许外部调用
protected 受保护的 不允许外部调用,允许子类调用
方法的传参
我们在定义方法时,通常需要考虑时候要给这个方法传递参数,这一点很重要,而且在设计完方法后,调用时要对应使用。1
2
3public void setNameAndAge(String name, int age){
...
}在使用这个方法时,务必要注意参数的类型
- 可变参数 (用
类型...
定义)
关于这个可变参数,简单理解就是参数可以接受一个数组,从而实现可变参数,注意,务必将属性设置为数组,否则接收参数就会错误!1
2
3public void setName(String... name){
...
}
- 可变参数 (用
构造方法
不知你是否有过疑惑,刚刚实例化是怎么操作的?为什么可以这样?1
Recipe xxx = new Recipe();
其本质原理是编译器会默认生成一个构造方法,其本质长这个样子
1
2
3
4
5
6
7
8class Recipe{
public String name;
Public String content;
public Recipe(){
}
}那么,编译器会自动默认一个,我们可以自己写一个麻?答案是可以的,而且还可以写参数哦,这样就可以实现使用类实例化时就给对象赋一个初始值哦。(ps:若是改变了构造方法,编译器就不会自动创建一个,这样我们在使用中要注意若是我们改变构造方法,让其变为可以接受参数的构造方法,原本不传参数的构造方法就失效了哦,要使用也很简单,再写一遍不就好了,哈哈哈,看下面代码部分。)
1
2
3
4
5
6
7
8
9
10
11class Recipe{
public String name;
Public String content;
public Recipe(){
}
public Recipe(String name){
this.name = name;
}
}方法的重载
通俗来说就是方法名相同,但各自所需传递的参数不同,从而实现不同的功能。