🌱博主简介:大一计科生,努力学习Java中!热爱写博客~预备程序媛
📜所属专栏:爪洼岛冒险记【从小白到大佬之路】
✈往期博文回顾: 【爪洼岛冒险记】第5站:多图解,超详细讲解Java中的数组、二维数组–建议收藏
🕵️♂️近期目标:成为千粉小博主。
🌺“再牛的程序员也是从小白开始,既然开始了,就全身心投入去学习技术”
👩🎨write in the front:
🤹♀️相信很多了解过C和Java/C++的,一定对面向对象编程、面向对象编程、万物皆对象都早已耳闻了,那到底什么是面向对象,什么是面向过程呢?接下来会举一个生动的例子,让大家切身感受一下~
🍳古人饿了vs现代人饿了:
//伪代码:
public static void hunt(){hunt a woolf;
}
public static void makeFire(){...
}
cook(){食材:woolf;....
}
eat(){吃狼肉;
}
public static void main(String[] args){hunt();//打猎makeFire();//生火cook();//做饭eat();//吃
}
//伪代码
//一:抽取出3个类
class youngMan{public void call();public void eat();
}
class manForTakeaway{public void takeOrders();public void delivery();
}
class cook{public void cooking();
}
class Demo{public static void main(String[] args){//二:创建对象youngMan Ming = new youngMan();//创建明同学manForTakeaway Hua = new manFortakeaway();//创建出华这个外卖员cook Wang = new cook();//创建出厨师王//三:使用对象Ming.call();Hua.takeOrders();Wang.cooking();Hua.delivery();Wang.cooking();}
}
🙇♀️总结:
🤷♀️虽然根据上面这两个例子,面向过程和面向对象,可见一斑。但是,你能说古人饿了这个问题,完全是面向过程的嘛?我其实认为不然。
🦉综上,万物其实皆对象~
当然,通过上面所讲,我们大概能参悟点对象&类的概念。我个人始终认为,要理解好一个概念,一个知识,如果能明白它为什么存在,存在的意义是什么?则能更好去理解和运用
🙇♀️所有的技术,最后还是和现实生活接轨的,我们不可能只是简简单单的用编程来完成一些整数的运算,求最大公约数诸如此类…而且,只靠那些内置类型,是完全不够的。比如,你如何表示”人“这个类型?又如何表示”动物“这个类型?这些与现实生活相关,一些复杂的问题,仅仅靠int char Strin…是无法解决的,也许能,但是我想对开发人员也不友好吧,如果一开始就有”人“/”动物“这个类型,那得多方便~开发效率也会提高。
当然这也是我目前的一种理解,也许每个人有自己的理解,只要合理即可。
class Person{String name;int age;public void eat(){System.out.print(name+"eating");}
}
注意:类的命名采用大驼峰
class Person{String name;int age;public void eat(){System.out.print(name+"eating");}
}
public class Demo{public static void main(){Person XiaoWang = new Person();//创建小王这个对象}
}
class Person{String name;int age;public void eat(){System.out.print(name+"eating");}
}
public class Demo{public static void main(){Person person1 = new Person();//通过引用变量person1.来访问对象的属性person1.name="XiaoWang";person1.age=18;}
}
class Person{String name;int age;public void eat(){System.out.print(name+"eating");}
}
public class Demo{public static void main(){Person person1 = new Person();Person person2 = new Person();}
}
Person person1
的时候,Person类就会被加载进JVM的方法区new Person()
的时候,会在JVM的堆区中开辟一个空间,用来存储对象。地址
赋给栈区上的引用变量(类类型变量)person1.class Person{String name;int age;public void eat(){System.out.print(name+"eating");}
}
public class Demo{public static void main(){Person person1 = new Person();person1.name = "XiaoWang";}
}
对象名.属性
找到该引用所指向其在堆内存上的对象,并访问其name属性class Person{String name;int age;//定义一个静态变量static int count=0;
}
public class Demo{public static void main(){Person person1 = new Person();}
}
class Person{String name;int age;//定义一个静态变量static int count=0;
}
public class Demo{public static void main(){Person person1 = new Person();Person person2 = new Person();//通过类直接访问静态变量(不依赖于对象)System.out.println(Person.count);//通过对象访问person1.count++;person2.count++;System.out.println(count);//2}
}
class Person{String name;int age;//如下,定义的eat()是一个成员方法public void eat(){System.out.print(name+"eating");}
}
public class Demo{public static void main(){Person person1 = new Person();person1.name = "XiaoWang";}
}
class Person{String name;int age;//如下,定义的eat()是一个成员方法public void eat(){static int test;//erro!!!System.out.print(name+"eating");}
}
class Person{String name;int age;//如下,定义的eat()是一个成员方法public static void eat(){static int test();//erro!!!System.out.print(name+"eating");}
}
class Person{String name;int age;int test(){}//如下,定义的eat()是一个静态成员方法public static void eat(){test();//erro!!!System.out.print(name+"eating");}
}
判断此类型,就要弄清楚先来后到!
类加载进内存。方法区存储:类的信息、方法信息(non-static&static方法的代码)、静态变量。–永远的第一步
判断static修饰时,可以想想:如果没有对象,只用类名调用,行得通嘛?
🏄♀️下期预告–详细讲解Java中最重要的语法–封装
🙆♀️专栏系列文章:
- 【爪洼岛冒险记】第5站:多图解,超详细讲解Java中的数组、二维数组–建议收藏
- 【爪洼岛冒险记】第4站:Java中如何进行控制台输入&输出?用Java实现猜数字小游戏;超详细讲解Java中的方法:方法的重载,方法的签名
- 【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升
- 【爪洼岛冒险记】第2站:带你学会:Java中三种输出语句,java中基本数据类型,学会变量,常量,类型转换知识点
- 【爪洼岛冒险记】第1站:Java重要特性,JDK,JRE,JVM区别和联系,环境变量
🙈原创不易,如果对你有所帮助,还请三连+关注!我是瑶瑶子,持续输出优质文章!