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 "";
    }
}

 

posted @ 2019-03-27 13:11  Just_do_IT_001  阅读(263)  评论(0)    收藏  举报