面向过程和面向对象的设计思想

java面向对象语言

object oriented programming OOP

面向过程和面向对象都是语言设计思想

案例:把大象装进冰箱 图书馆管理系统 书类 管理员类 借阅……

面向过程:关注于具体的流程,一步一步实现解决问题

3步可以实现

1.开门();

2.装大象();

3.关门();

面向对象:先设计 对现实中客观事物进行分类,创建出类(在类中定义功能),创建出具体对象,让对象去做具体事情。

冰箱类{

开门()

关门()

装大象()

}

大象类{

}

难?

概念多,设计复杂

java类

类是对象现实事物的抽象。

实际生活中,先有对象(具体存在),后有类

人 人类(概念)

张三 对象(具体的一个人)

类的结构

成员变量:类中的属性 名词:品牌,颜色,价格,型号

方法:类中行为(功能) 动词:行驶,加速,停止.....

构造方法:用于创建对象

代码块

内部类

类是一个模型,对现实事物的抽象.是模板。

对象是从类这个模型创建出来的一个具体实例.

java类的定义

  • 第一步:发现类

/*
1.发现类
   汽车类
   public修饰的类,类名必须与文件名一致
   [访问权限修饰符][修饰符] class 类{
​
​
   }
​
        */
public class Car {}

  • 第二步:发现类的共有属性(成员变量)

     /*
    ​
        2.定义类的成员变量(属性)  名词  成员:类的成员,在类中定于
        定义在类中,方法体之外
        数据类型可以是java中的支持的任意类型(引用类型,基本类型)
        成员变量可以初始化,也可以不初始化,不初始化时,java会默认值为其初始化
            引用类型类型默认值是null 整数-0,浮点-0.0 boolean-false char-' ';
        创建对象时,会从类中向对象中复制一份成员变量
        在构造方法中,成员方法,代码块中可以使用成员变量
        */
        String name;
        float price;
        String color;
        int speed;

  • 第三步:发现类的方法

     /*
        3.定义类的成员方法(行为/功能) 动词
        局部变量:
         定在方法,构造方法,代码块中
         使用前必须赋值
         数据类型可以是java中支持的任意类型
         方法的参数也是局部变量
         方法运行时局部变量创建,运行结束后局部变量销毁
    ​
     */
        public void run(int b){
            int a = 0;
            System.out.println(a);
            System.out.println(b);
            System.out.println(name+"汽车行驶");
        }
        /*
          成员方法:定义在类,没有被static修饰的.通过对象调用
        **/
       public void stop(){
           System.out.println(name+"汽车停止");
       }
    }
    ​

java对象

/*    对象:具体存在的客观事物,可以拿来使用.万事万物(具体存在的客观事物)皆为对象    new Car();  new 在内存创建对象,Car()构造方法(默认有一个构造方法,方法名与类名相同)  Car bm/bc  声明了一个Car类型的变量    
=将创建的对象赋给了左边的变量    
bm 表示一个具体存在的对象,可以使用       
    bm.name      
     bc       
      bc.name  
*/
        Car bm = new Car();
        bm.name = "宝马";
        bm.color = "黑色";
        bm.price = 300000;
        bm.run(100);
​
​
        Car bc = new Car();
        bc.name = "奔驰";
        bc.price = 400000;
        bc.color = "白色";
        bc.run(200);

总结:

  • 类:是一类事物的抽象概念,是一个模型

  • 对象:是由这个模型所创造出的一个具体化的存在,实实在在的实例

  • 所以创建对象过程也叫实例化对象.

  • 现实生活中先有对象后有类,而编程是先设计类后创建对象

变量分类

  • 按照位置分为:

    • 成员变量:可以使用java语言中的任意一种数据类型(包括基本类型和是引用类型)

      1.在定义成员变量时可对其初始化,如果不对其初始化,java会使用默认的值对其

      初始化

      2.成员变量在创建对象时会从类中复制一份到对象中。

      3.成员变量可以被类中的方法,构造方法和特定类的语句块访问。

      4.成员变量作用于整个类

    • 局部变量:在方法、构造方法或者语句块中定义的变量

    1.局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。

    2.局部变量在使用前必须初始化赋值。

    3.变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁

方法分类

  • 成员方法:定义在类中

语法格式:修饰符 返回值类型 方法名 ( 参数列表) {

方法体语句;

[return 返回值]

}

  • 构造方法:用来初始化对象的方发

构造方法

构造方法名与类名相同,且没有返回值,且不需要void修饰

1.作用:在构造方法中为创建的对象初始化赋值,

2.在创建一个对象的时候,至少要调用一个构造方法。

3.每个类都有构造方法。如果没有显式地为类定义构造方法,Java将会为该类提供一个默认

构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效。

4.一个类可以有多个构造方法

public class Person {    
//成员表变量    
public String name;    
int age;   
//构造方法    
public Person(){}    
public Person(String name,int age) {        
this.name = name;        
this.age = age;    
}    
//成员方法   哪个对象调用showInfo方法,那么name,age就是哪个对象中的属性    
//this表示当前正在操作的对象  在成员方法,构造方法中使用成员变量,使用this调用.    public void showInfo(){        
System.out.println("姓名:"+this.name+" 年龄:"+this.age);    
}
}
public class TestPerson {       
/*       
变量分类:        
按照数据类型分:       
基本类型:8个 byte int long float double char boolean        
引用类型:数组,String,自定义的类        
new Person("张三",22); 在堆空间创建并存在对象        
Person zs 在栈空间中声明的一个变量        
= 把对象在内存中的地址 赋给 左边的变量,左边的变量只是持有对象的引用地址        
*/   
public static void main(String[] args) {        
Person zs = new Person("张三",22);       
zs.showInfo();       
Person ls = new Person("李四",20);       
ls.showInfo();        
//new Person("张三",22).showInfo();        
Person ww =ls;    
}
}

方法重载

/*  方法重载:在同一个类中,有多个方法名相同,但参数不同的方法  
参数:
个数       
类型       
顺序        
方法重载与返回值无关        
成员方法也可以重载
*/   
public void run ( int b){        
System.out.println(name + "汽车行驶");    }  
​
public void stop () {        
System.out.println(name + "汽车停止");    }    
public void test(){}  
​
public void test(int a){}  
​
public void max(int a,int b){       
System.out.println("int a,int b");    }
​
public void max(float a,float b){    
System.out.println("int a,int b");}
​
public void test(int a,float b){        
System.out.println("int a,float b");    }
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐