面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
好的,以上来自互联网百度内容,无疑可以想到Java为什么要用到面向对象来解决问题,问题太麻烦了所以懒得自己去想,拜托喜欢想问题的哲学家多好啊,于是乎,我们面向了对象。
- A:我们学习编程是为了什么
- 为了把我们日常生活中实物用学习语言描述出来
- B:我们如何描述现实世界事物
- 属性 就是该事物的描述信息(事物身上的名词)
- 行为 就是该事物能够做什么(事物身上的动词)
- C:Java中最基本的单位是类,Java中用class描述事物也是如此
- 成员变量 就是事物的属性
- 成员方法 就是事物的行为
- D:定义类其实就是定义类的成员(成员变量和成员方法)
- a:成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
- b:成员方法 和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
- E:类和对象的概念
- a:类:是一组相关的属性和行为的集合(我们班所有的同学都具备相同的属性和行为,比如:姓名,年龄,学习,这样就把所有的学生成为学生类)
- b:对象:是该类事物的具体体现(说某个同学时,他都具备自己特有的属性和行为)
- c:举例:
- 类 学生
- 对象 具体的某个学生就是一个对象
比如:车是一个类,具体的开的奔驰、宝马,就是对象
文字是最好的架构,我们可以画出无数个一的形状,但它代表的也仅仅是一,解释就没必要了。
成员变量和局部变量的区别
- A:在类中的位置不同
- 成员变量:在类中方法外
- 局部变量:在方法定义中或者方法声明上
- B:在内存中的位置不同
- 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
- 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
- C:生命周期不同
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
- D:初始化值不同
- 成员变量:有默认初始化值
- 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
文字看的多了很容易分心,不看又理解不了,这时候就得靠面向对象来实现懒人操作了。
class Demo1_Person {
public static void main(String[] args) {
Person p = new Person();
p.speak();
}
}
class Person {
String name; //成员变量
int num;public void speak() {
int num = 10; //x和num都是局部变量
System.out.println(name);
System.out.println(num);
}
}
还有匿名对象,应该不用特意写出来吧,用的机会不多。接下来就是面向对象的三大特征之一的封装了,至少有人问起封装的好处是什么可以回答:
- 隐藏实现细节,提供公共的访问方式
- 提高了代码的复用性
- 提高安全性。
具体的提供访问方式,就是程序员喜闻乐见的set和get方法了,一遍一遍的敲,人会使用工具真是太棒了。
class Demo2_Phone {
public static void main(String[] args) {
Phone p1 = new Phone();
p1.setBrand("三星");
p1.setPrice(5288);
System.out.println(p1.getBrand() + "..." + p1.getPrice());
p1.call();
p1.sendMessage();
p1.playGame();
}
}
/*
手机类
属性:品牌brand,价格price
行为:打电话call,发短信sendMessage,玩游戏,playGame
*/
class Phone { // java bean
private String brand; // 品牌
private int price; // 价格
public void setBrand(String brand) { // 设置品牌
this.brand = brand;
}
public String getBrand() { // 获取品牌
return this.brand; // this.可以省略,你不加系统会默认给你加
}
public void setPrice(int price) { // 设置价格
this.price = price;
}
public int getPrice() { // 获取价格
return price;
}
public void call() { // 打电话
System.out.println("打电话");
}
public void sendMessage() { // 发短信
System.out.println("发短信");
}
public void playGame() { // 玩游戏
System.out.println("玩游戏");
}
}
构造方法?只能是代码里见分晓了:
class Demo3_Student {
public static void main(String[] args) {
Student s1 = new Student(); //使用空参构造
s1.setName("张三"); //设置姓名
s1.setAge(23); //设置年龄
System.out.println("我的姓名是:" + s1.getName() + ",我的年龄是:" + s1.getAge());
//getXxx()获取属性值,可以打印,也可以赋值给其他的变量,做其他的操作
Student s2 = new Student("李四",24);
s2.show(); //只是为了显示属性值
}
}
class Student {
private String name; //姓名
private int age; //年龄
public Student(){} //空参构造
public Student(String name,int age) { //有参构造
this.name = name;
this.age = age;
}
public void setName(String name) { //设置姓名
this.name = name;
}
public String getName() { //获取姓名
return name;
}
public void setAge(int age) { //设置年龄
this.age = age;
}
public int getAge() { //获取年龄
return age;
}
public void show() {
System.out.println("我的姓名是:" + name + ",我的年龄是:" + age);
}
}
还用解释吗?记得懒人思想就好。
ps:每日一词,六日放假不是很正常的嘛。
念奴娇
盘风浸枕,月寒偿不去,恨君游戏。菡萏更残花更细,似剪一生无忌。指点东山,湘江残雨,飞落闲交臂。重来重庆,问津能度我几。
我恁举月还星,弄花含玉,对影迟乡计。梦里寻风吹落絮,今夕纵歌无礼。且作生人,还听何必,先遣红尘济。半言奀语,暂输棋画三气。