面向对象!(Java进阶啦!)

    首先恭喜我们,基本上学完Java的基础语法,接下来我们要走向面向对象的过程,在学习面向对象之前,我们要了解到什么是面向对象?什么是面向过程?
 

一、面向对象与面向过程

    那么什么是面向过程呢?通俗的说就是我制作一辆汽车,我如何去7一步步去制作出来这个过程,就是面向过程,即我要先购买原材料,再一步步制作小零件,再慢慢组装起来一辆汽车这个过程,那么专业一点的去描述面向过程的话就是:以一个个方法为单位去解决问题,比较适合简单一点的业务,常见的面向过程的计算机语言就是c语言(只是说c是面向过程,c可不简单哦!)

    解释完面向过程,那我们来说说面向对象,我们所学的Java就是一个面向对象的语言,同样的我们用比较通俗的语言描述一下面向对象:还是拿制作汽车为例,面向对象就是说,我要制作一辆汽车,我不去一步步做,我直接去各个汽车零件厂拿取汽车零件,直接组装起来,这就是面向对象。同样的我们用专业一点的话说就是:以对象(下面会解释)为单位来解决问题,比交适合复杂的业务。

二、类与对象

      什么是类呢?什么又可以称为对象呢?

     我们所说的类,其实是一个比较抽象的,我们所有人可以称为一个类,所有动物也可以称为一个类,动物下的猫科类也可以称为一个类,电子产品,生活用品,视频等等都可以称为类。

      那我们是不是可以总结出来类是什么了?在小白我看来,类就是一个比较模糊的集合,里面所包含的一大堆的东西,比如人这个类,就有青年,老年,小孩,等分类,也可以有年龄,性别,身高,体重,身份证号码呀这些具体的东西。

     从上面我们是不是可以知道一个类是可以包含许多类的,但是java中的类是不包含类,类里只包含对象,那什么是对象呢?什么又是方法呢?

     对象就是一个具体的东西,在人这个类中,小白我就是一个对象,我有上面所说的年龄,性别,身高,体重,身份证号码等特征,也有吃饭,玩,学习等行为,那么在Java中相关的特征我们称为变量,相关的行为我们可以称为方法。

   总结:类是对象的模子/模板,对象是类的具体的实例,可以将类理解为类别/模子/图纸

              类中可以包含:对象的属性/特征/数据----------------------成员变量

              对象的行为/动作/功能----------------------方法

              一个类可以创建多个对象(人类不可能只有小白我对吧)

三、类与对象的创建以及访问成员

      类是什么数据类型呢?类是一种引用数据类型。引用数据类型的默认值为null。

      正好复习一下默认值:

byte , short , int , long , char --------------- 0
float , double --------------------------- 0.0
boolean -------------------------------- false
引用类型 --------------------------------- null

       类的创建:

       public class Student{

}

//类的创建,类名用大驼峰命名

     对象的创建:

Student student = new Student();

    我们需要注意的就是,在我们new对象的时候,会自动的调用类的构造方法(下面就会讲到) 

     访问成员:

1.先在类中定义对象的属性以及方法:

    //成员变量---描述对象的属性
    String name;
    int age;
    String className;
    String stuId;

    //方法------描述对象的行为
    void study(){
        System.out.println(name+"在学习...");
    }
    void sayHi(){
        System.out.println("大家好,我叫"+this.name+",今年"+this.age+"岁了,所在班级为"+this.className+",学号为:"+this.stuId);
    }
    void playWith(String anotherName){
        System.out.println(this.name+"正在和"+anotherName+"一起玩...");
    }
}

2.在通过创建对象进行访问(现在是在同一个包中进行相关操作,以后会讲其他的情况!):

public class StudentTest {
    public static void main(String[] args) {
        //创建一个学生对象
        Student zs = new Student();
        //访问成员变量
        zs.name = "张三";
        zs.age = 24;
        zs.className = "jsd2302";
        zs.stuId = "001";
        //调用方法
        zs.study();
        zs.sayHi();
        zs.playWith("李四");

        Student ls = new Student();
        ls.name = "李四";
        ls.age = 25;
        ls.className = "jsd2302";
        ls.stuId = "002";
        ls.study();
        ls.sayHi();
        ls.playWith("张三");

        //1)创建了一个学生对象
        //2)给所有成员变量赋默认值
        Student ww = new Student();
        ww.study();
        ww.sayHi();
        ww.playWith("张三");
    }
}

 

四、this关键字

    

this:指代当前对象,哪个对象调用方法它指的就是哪个对象

只能用在方法中,方法中访问成员变量之前默认有个this.

this的用法:

        this.成员变量名--------------------访问成员变量(必须掌握)

        当成员变量与局部变量同名时,若想访问成员变量,则 this 不能省略
        this. 方法名 ()------------------------- 调用方法 ( 一般不用 )
        this()----------------------------------- 调用构造方法 ( 一般不用 )

五、构造方法

构造方法:构造函数、构造器、构建器 ---------- 好处:复用给成员变量赋初始值的代码
作用:给成员变量赋初始值
语法:与类同名,没有返回值类型 ( void 都没有 )
调用:在创建 (new) 对象时被自动调用
若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默
认提供
构造方法可以重载
public class Student {
    //成员变量---描述对象的属性
    String name;
    int age;
    String className;
    String stuId;
    //构造方法
    Student(){
        this("无名氏",1,"未知","未知"); //调用4个参数构造
    }
    Student(String name,int age,String className,String stuId){
        this.name = name;
        this.age = age;
        this.className = className;
        this.stuId = stuId;
        //这里this关键字就是使我们的name指向成员变量而不是参数
    }

    //方法------描述对象的行为
    void study(){
        System.out.println(name+"在学习...");
    }
    void sayHi(){
        System.out.println("大家好,我叫"+name+",今年"+age+
                 "岁了,所在班级为"+className+",学号为:"+stuId);
    }
    void playWith(String anotherName){
        System.out.println(name+"正在和"+anotherName+"一起玩...");
    }
}

public class ConsDemo {
    public static void main(String[] args) {
        Student s = new Student();
        s.sayHi();
        Student zs = new Student("张三",24,"jsd2306","001");
        zs.sayHi();
        Student ls = new Student("李四",25,"jsd2306","002");
        ls.sayHi();
    }
}

六、综合练习

       

  1. Car类和CarTest类:

    • Car类:brand(品牌),color,price,构造方法(),start()、run()、stop()

    • CarTest类:创建对象,访问测试

    String brand; //品牌
    String color; //颜色
    double price; //价格

    Car(){
    }
    Car(String brand,String color,double price){
        this.brand = brand;
        this.color = color;
        this.price = price;
    }

    void start(){
        System.out.println(brand+"牌子的"+color+"颜色的"+price+"块钱的车启动了...");
    }
    void run(){
        System.out.println(brand+"牌子的"+color+"颜色的"+price+"块钱的车开始跑了...");
    }
    void stop(){
        System.out.println(brand+"牌子的"+color+"颜色的"+price+"块钱的车停止了...");
    }
}

public class CarTest {
    public static void main(String[] args) {
        Car car1 = new Car();
        car1.brand = "奔弛";
        car1.color = "黑";
        car1.price = 80;
        car1.start();
        car1.run();
        car1.stop();

        Car car2 = new Car("奥迪","银",40);
        car2.start();
        car2.run();
        car2.stop();

        Car car3 = new Car("特斯拉","白",70);
        car3.start();
        car3.run();
        car3.stop();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值