JAVA中的面向对象
今天我来分享一下自己在学习java时对于面向对象的理解.
1.什么是对象
在学习java时,总会听到的一句话就是"如果没有对象,我们就new一个对象"."万物皆对象"即世界万物我们都可以把它们分为一一又一个的对象,它们都有自己的属性与行为.如人作为对象,有名字|年龄|性别等属性.有打篮球,打游戏,写作业的等行为.这是与我们软件对象是相对应的.
2.什么是面向对象
面向对象程序设计是人们认知世界的普遍思维方式应用到编程语言中,如何认识面向对象呢?我们需要与面向过程进行比较.
举个例子:买杯咖啡 面向过程的思维方式是:我如何去买咖啡?会把买咖啡分为一个又一个的过程,按照1,2,3的方式去实现它.
面向对象的思维方式是:我应该找谁去买咖啡? 把买咖啡中的出现的事物分为一个个对象,然后根据事物串联起来,根据不同事物独立分配不同的任务完成它.
面向过程的思路在编程语言中一步步思路清晰,但面对巨大的任务即代码量时,一但中间出了小问题或者是修改了数据,也要重新一步步编程,工作量是巨大的.所以我们要使用面向对象.当我们解决问题是只要找到对应的对象即可.
3.类与对象的联系
类是一个模板一个图纸,它描述了一类对象的行为与状态.老虎|大象|羊|狼都可以看为一个个对象,而动物即是抽象可以描述他们的一个动物类.
4.如何自定义类
修饰符 类名{
//成员变量
修饰符 数据类型 变量名=赋值;
//成员方法
修饰符 返回值类型|void 方法名(参数列表){
功能体;
}
}
举例说: 手机的特征:颜色 品牌 价格--->即为手机类的成员变量
手机的功能:打电话 玩游戏---->即为手机类的成员方法
//手机类
public class Phone{
public String type;//成员变量
public String color;//成员变量
public int price;//成员变量
public void call(){ //成员方法
System.out.println();
}
}
5.对象的创建
public class Test{
public static void main(String[]args){
Phone phone=new Phone();
phone.type="苹果11";
phone.color="红色";
phone.call();
}
}
class Phone{
public String type;//成员变量
public String color;//成员变量
public int price;//成员变量
public void call(){ //成员方法
System.out.println("小明拿着"+color+"的"+type+"打电话");
}
}
从上面的例子可以看出,通过new关键字可以创建一个新的对象.其中new关键字创建对象的过程如下:
1.在堆中为对象开辟空间,成员属性跟随对象进入到堆内存中,并赋默认值
2.调用这个类的构造器为对象初始化信息 (第一次赋值就叫做初始化,就成员属性)
3.将地址返回给引用
构造方法
构造方法的定义
修饰符 类名(){
构造器...
}
1.没有返回值类型,没有void,可以添加return
2.方法名必须与类名一致
3.不能和static,final,abstract一起使用
4.构造器可以帮助我们简化代码,在通过对象.属性之前,就可以为对象的属性赋值
构造方法的重载
public class ConstructorDemo01 {
public static void main(String[] args) {
//先创建对象
Dog dog=new Dog(); //()->构造器的参数列表
//手动赋值
dog.color="黄色";
dog.type="中华田园犬";
//创建对象并且赋值
Dog dog2=new Dog("花色","加肥猫");
dog.dog();
dog2.dog();
Dog dog3=new Dog("黄色");
dog3.dog();
}
//构造器
public ConstructorDemo01(){}
}
//Dog 类
class Dog{
public String color;
public String type;
//构造器 空构造
public Dog(){
System.out.println("我是空构造");
}
public Dog(String dogColor){
System.out.println("我是参数1");
color=dogColor;
}
//带参构造 2个参数
public Dog(String dogColor,String dogType){
color=dogColor;
type=dogType;
System.out.println("我是带参2");
}
//展示细节
public void dog(){
System.out.println(color+"---->"+type);
}
}
构造器就是特殊的方法,特殊的创建方式,特殊的使用方式,特殊的作用,但是也是方法,所以有方法的重载特性