java 类与对象
一,理解什么是面向对象
举个例子,如果你想吃饭了,怎么办呢,你有两个选择
面向过程 : 自己去菜市场买菜,洗菜,炒菜,煲米饭;你需要你些过程才能吃到饭;
面向对象 : 点外卖,你就能直接吃到饭,不需要中间买菜做饭的过程;
①、面向过程是将事物用代码的形式一步一步来实现它的过程;
而面向对象则是将现实中的事物看成一个个对象,通过对该对象赋予属性和相应方法,从而驱动该对象来完成某件事。
②、面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
在我们编程语言中,C语言是面向过程的,而Java是面向对象的
二、类与对象的概念
1、什么是类呢?
举个例子,相对于种族我们人是一个类,我们人这个类里面有哪些对象呢,有男人,女人;
然而相对于年龄上的区分,男人有是一个类,男人这个类里面又有男孩,青年男子,中年男子,老年男子等等这些对象;
又例如:车是一个类,这个类里面有 法拉利、GTR、马萨拉蒂...
类是一个种类的统称,确定对象会拥有的特征以及属性
那么类有什么特点呢
1)、类是对象的类型
2)、具有相同属相和方法的一组对象的集合
2、什么是对象呢?
万物皆对象(everything is object)
举个例子,我们日常生活中遇到的人;使用的交通工具(汽车,火车,摩托车,单车等等),建筑等等都是对象;
对象是累的具体化
对象的特点:
1)、对象是类的具体
2)、对象具有类所拥有的全部特征
例如:轿车是一个类,这个类里面有 属性1:4个轮子,属性2:外壳,属性3:车标,属性4:方形盘
而我们的奔驰是一个对象,这个对象里面有类的属性 属性1:4个轮子,属性2:外壳,属性3:车标,属性4:方形盘
但也有类没有的属性,属性5:奔驰车标 (只有奔驰车有,其他品牌的车没有)
3、类与对象的关系
- 类是抽象的概念,仅仅只是一个模子
- 对象是具体的实体,一目了然
1)、 类是一组相同属性、方法的对象的集合
对象是类的具体化
2)、对象具有类所有的特征,类拥有的,对象就拥有。反过来,对象拥有的,类不一定拥有。
3)、类与对象它们的关系是相对的。
4、对象的属性和方法
奔驰车是一个对象的话,它有哪些属性和方法呢?
属性:品牌:奔驰
颜色:白色
价格 : 100万元
方法:发动
停止
坐人
如果狗是一个对象的话,它的属性和方法有:
属性:品种:法牛
颜色:黑色
方法 : 吃
跑
叫
5、定义类
类的重要性,所有Java程序都以类class为组织单元
定义类的步骤:
a.定义类名
b.编写类的属性
c.编写类的方法
/** * 定义一个car类 */ public class car{ //属性 public String name; //车的名字 public int color; //车的颜色 public char price; //车的价格 /** * 车的方法 * 能跑 * 能停止 */ public void run(){ System.out.println("我能跑"); } public void stop(){ System.out.println("停止"); } }
二、使用对象
java对象
使用对象的步骤
1、创建对象:
类名 对象名 = new 类名();
public static void main(String[] args) { car car = new car(); //创建一个对象 类名是:car 对象名为: car }
2、使用对象
引用对象的属性:对象名.属性;
引用对象的方法:对象名.方法();
给对象的属性赋值:
public static void main(String[] args) { car car = new car(); car.name = "奔驰"; //车的名字:奔驰 car.color="红色"; //车的颜色:红色 car.price = 100000; //车的价格:100000 }
调用对象的方法:
public static void main(String[] args) { car car = new car(); car.run(); //调用车的run方法 car.stop(); //调用车的stop方法 }
3、构造方法
构造函数,也叫构造方法,是java中一种特殊的函数。函数名与类名相同,无返回值
构造方法的特点:
a、没有返回值,并且方法名必须与类名相同
b、所有的类都有一个默认的空的构造方法,但一旦用户主动声明构造方法时,原本默认的构造方法失效。
c、构造方法允许存在多个
/** * 定义一个car类 */ public class car{ //属性 public String name; //车的名字 public String color; //车的颜色 public int price; //车的价格 /** * 构造方法 跟其他方法区别就是构造方法没有void */ public car(){ System.out.println("我是一个默认的构造方法"); } public static void main(String[] args) { car car = new car(); } }
运行的结果:
构造方法在我们创建对象的时候运行
我们可以定义多个构造方法:
/** * 定义一个car类 */ public class car{ //属性 public String name; //车的名字 public String color; //车的颜色 public int price; //车的价格 /** * 构造方法 */ public car(){ System.out.println("我是一个默认的构造方法"); } /** * 我也是一个构造方法 * @param args */ public car(String name){ this.name=name; System.out.println("我的名字叫:" + name); } public static void main(String[] args) { car car = new car(); car car1 = new car("奔驰"); } }
运行的结果:
4、static关键字,修饰符
静态变量:
static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
静态方法:
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。
public class Demo1 { public static String name; //静态变量 public static String age; //静态变量 public String sex; //非静态变量 public int num; //非静态变量 /** * 静态方法 */ public static void fun(){ System.out.println("我是静态方法"); } /** * 非静态方法 */ public void run(){ System.out.println("我是非静态方法"); } }
被它修饰的变量是静态变量,也叫类变量,可以通过类.静态变量来访问,归类所有
被它修饰的方法是静态方法,也叫类方法,也只能过类.静态方法来访问,归类所有
在静态方法中,不能直接访问非静态变量(动态变量)和非静态方法
类所有的属性和方法,它的对象一定都会具备
静态变量全局唯一,为所有对象共用,修改它的值,其它对象使用该变量时值也会改变
非静态变量,每个对象持有一份,是独立的,修改对象1的变量值不会影响其它变量的值
5、修饰符
修饰符是用来限定应用程序内文件的访问级别的,Java语言中的访问控制级别有4种:
a. public (公有的)
b. protected (受保护的)
c. default (默认的)
d. private (私有的)
6、方法的重载
多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载
- 方法名称必须相同
- 参数列表必须不同
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以称为方法的重载
public class Demo1 { /** * 无参有返回值 */ public int void fun(){ } /** * 有参有返回值 * @param num * @return */ public int fun(int num){ return num; } public String fun(String name){ //与上面方法相同,返回值和形参不同 return ""; } }