首先恭喜我们,基本上学完Java的基础语法,接下来我们要走向面向对象的过程,在学习面向对象之前,我们要了解到什么是面向对象?什么是面向过程?
一、面向对象与面向过程
那么什么是面向过程呢?通俗的说就是我制作一辆汽车,我如何去7一步步去制作出来这个过程,就是面向过程,即我要先购买原材料,再一步步制作小零件,再慢慢组装起来一辆汽车这个过程,那么专业一点的去描述面向过程的话就是:以一个个方法为单位去解决问题,比较适合简单一点的业务,常见的面向过程的计算机语言就是c语言(只是说c是面向过程,c可不简单哦!)
解释完面向过程,那我们来说说面向对象,我们所学的Java就是一个面向对象的语言,同样的我们用比较通俗的语言描述一下面向对象:还是拿制作汽车为例,面向对象就是说,我要制作一辆汽车,我不去一步步做,我直接去各个汽车零件厂拿取汽车零件,直接组装起来,这就是面向对象。同样的我们用专业一点的话说就是:以对象(下面会解释)为单位来解决问题,比交适合复杂的业务。
二、类与对象
什么是类呢?什么又可以称为对象呢?
我们所说的类,其实是一个比较抽象的,我们所有人可以称为一个类,所有动物也可以称为一个类,动物下的猫科类也可以称为一个类,电子产品,生活用品,视频等等都可以称为类。
那我们是不是可以总结出来类是什么了?在小白我看来,类就是一个比较模糊的集合,里面所包含的一大堆的东西,比如人这个类,就有青年,老年,小孩,等分类,也可以有年龄,性别,身高,体重,身份证号码呀这些具体的东西。
从上面我们是不是可以知道一个类是可以包含许多类的,但是java中的类是不包含类,类里只包含对象,那什么是对象呢?什么又是方法呢?
对象就是一个具体的东西,在人这个类中,小白我就是一个对象,我有上面所说的年龄,性别,身高,体重,身份证号码等特征,也有吃饭,玩,学习等行为,那么在Java中相关的特征我们称为变量,相关的行为我们可以称为方法。
总结:类是对象的模子/模板,对象是类的具体的实例,可以将类理解为类别/模子/图纸
类中可以包含:对象的属性/特征/数据----------------------成员变量
对象的行为/动作/功能----------------------方法
一个类可以创建多个对象(人类不可能只有小白我对吧)
三、类与对象的创建以及访问成员
类是什么数据类型呢?类是一种引用数据类型。引用数据类型的默认值为null。
正好复习一下默认值:
byte , short , int , long , char --------------- 0float , double --------------------------- 0.0boolean -------------------------------- 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.成员变量名--------------------访问成员变量(必须掌握)
五、构造方法
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();
}
}
六、综合练习
-
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();
}
}