javaSE 4.1

面向对象和面向过程

       面向对象是一种编程风格,是一种程序设计思想(除此以外,还有面向过程,指令式编程,函数式编程...)   现在主流的编程思想是面向对象面向过程   早期程序比较简单,先有面向过程,后来程序越来越复杂,弊端比较多,所以就诞生了面向对象这一编程思想.

面向过程

核心:将功能实现的过程(步骤)封装成函数.在每一步执行时,调用对应的函数即可. 典型的语言: c语言

以函数为单位进行代码组织的,相对于面向对象的语言扩展能力差.

面向对象

核心:以类为单位处理问题, 将同一类事务的属性和行为封装到一个类中 解决某一类问题时,找对应的类即可.

类与类之间还可以存在继承关系,使得代码的扩展性更好,维护性更好.

面向对象是一种宏观的设计思想,分析出完成某件事情,需要哪些类

面向过程是一种微观具体的设计思想,是具体落地实现

程序设计时,二者相辅相成 不可分割

类和对象

类是具有相同特征事务的抽象定义 ,是一个模版,用来记录事务的属性和方法(行为)

例如 人类(类) ----->属性: 姓名 年龄 性别 等变量(名词)

                      ----->方法: 吃饭 学习 工作 睡觉 等动作 行为 功能 (动词)

编程时,先分析事务由哪些类构成,将不同类型的功能定义在各自类中(先设计类,由类创建对象)

对象

通过类这个模版,所创建出的一个个具体的实例就是对象.

例如:人类是抽象概念,不能直接使用.而张三,李四是具体的人, 也就是对象(实例),可以进行具体的操作(定义属性和功能).对象(实例)就是具体存在的东西

区别

现实生活中,是先有对象(具体), 后有类(抽象).

编程中,是先根据具体事务设计类(抽象), 再由类创建出对象(具体).

类的结构

变量 属性 名词

方法 行为 动词

          public           final/abstract                 class                         Car    {

[访问权限修饰符]        [修饰符]         关键字(用来定义类)      类名(首字母大写)

类的成员(定义在类的{}中的内容):
1.成员变量(属性):  在成员方法,构造方法 代码块中使用,作用域为整个类体 故可以成为全局变量
  定义在类中,方法体(main 自己定义的方法)之外   例如名称 颜色 价格
2.成员方法

}

package day1;
​
public class Car {
    //成员变量
    String name ;
    String color;
    float price;
    int[] a;//成员变量可以是基本类型,也可以是引用类型(除基本类型之外的都是引用数据类型 例如数组)
​
    //成员方法
    public void start(){
        //int b;局部变量
        //System.out.println(b);
  //局部变量不赋值会报错,但是成员变量不赋值不会报错,系统会给他赋默认值
          System.out.println(name+"启动");
    }
    public void run(){
        System.out.println(name+"行驶");
    }
    public void showinto(){
        System.out.println("名称"+name+" "+"颜色"+color+" "+"价格"+price);
    }
}
​
​
​

类的创建和变量声明

创建对象 new Car()  

声明变量 Car bm/bc

package day1;
​
public class TestCar {
    public static void main(String[] args) {
        //创建对象 new Car() 在内存中开辟了一块空间
        //声明变量 Car bm/bc
        Car bm = new Car();//把右边开辟的空间赋给左边的对象地址
            bm.name  = "宝马";
            bm.color = "红色";
            bm.price = 400000;
            bm.start();
            bm.run();
            bm.showinto();
        //以类为模版,创建出两个车对象bm bc(实例)
        //每new出一个对象 这个对象都具有类中定义的功能
        Car bc = new Car();
            bc.name = "奔驰";
            bc.color = "黑色";
            bc.price = 300000;
            bc.start();
            bc.run();
            bc.showinto();
    }
}

构造方法

方法的重载

       在一个类中,有多个同名的方法称为方法的重载,可以通过参数(类型 个数 顺序)进行区分 且与返回值无关

package day1;
​
public class Person {
​
    String name;
    int age;
    char gender;
​
    public Person(){
        System.out.println("这是Person类的无参数构造方法,作用是为对象成员变量赋默认值");
    }
   
    public void eat(){
        System.out.println(name+"吃东西");}
​
    public void showinfo(){
        System.out.println("姓名"+name+"年龄"+age+"性别"+gender);
    }
    //定义了有三个参数的构造方法
    public Person(String n, int a, char g){
        System.out.println("有三个参数的构造方法");
        name = n;
        age = a;
        gender = g;
    }
    public Person(String n, int a){
        System.out.println("有两个参数的构造方法");
        name = n;
        age = a;
    }
    public Person(int a , String n){
        System.out.println("有两个参数的构造方法");
        name = n;
        age = a;
    }
    public Person(int a, char g){
        System.out.println("有两个参数的构造方法");
​
    }
}



​ new+构造方法()        

1.作用: 构造方法就是为创建出来的成员变量进行初始化赋值zhangsan.showinfo();      
2.特点: 构造方法的名字与 类名 相同,不需要用void修饰            
             一个类中如果没有定义构造方法,系统会提供一个默认的无参构造方法        
3.注意:类中默认的构造方法是会失效的,例如:一旦在类中定义了有参的构造方法,默认的无参构造方法就失效被覆盖了            
      所以一般在类中定义了有参的构造方法,都会把默认的无参构造方法定义出来        

package day1;
​
public class  TestPerson {
    public static void main(String[] args) {
​
        Person zhangsan = new Person();
        /*                new+构造方法()
         作用: 构造方法就是为创建出来的成员变量进行初始化赋值zhangsan.showinfo();
         特点: 构造方法的名字与 类名 相同,不需要用void修饰
              一个类中如果没有定义构造方法,系统会提供一个默认的无参构造方法
         注意:类中默认的构造方法是会失效的,例如:一旦在类中定义了有参的构造方法,默认的无参构造方法就失效被覆盖了
             所以一般在类中定义了有参的构造方法,都会把默认的无参构造方法定义出来
         */
       zhangsan.showinfo();
       new Person();
​
        Person lisi = new Person();
        lisi.name ="李四";
        lisi.age =20;
        lisi.gender='男';
        lisi.showinfo();
​
        Person wangwu =new Person();
        wangwu.name ="王五";
        wangwu.age =23;
        wangwu.gender='男';
        wangwu.showinfo();
​
​
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值