1:面向对象->面向对象和面向过程的思想 都是我们编写程序的一种方式。 面向过程:这种程序设计方式,遇到事情思考:"我该怎么做",然后一步步实现的过程。 典型的c语言就是。 面向对象:这种程序设计方式,遇到事情思考:"我改让谁来做",然后那个谁就是对象。 他要怎么做这件事是他自己的事,反正到最后合力把事做好就可以了。 找不到人,就创建这个人。java语言就是。
2:面向对象->代码实现
大象装冰箱总共分几步
开门 把大象装进去(存储大象-> java的功能) 关门
分析:
具体存在哪些事物:冰箱、大象
java语言就是描述现实生活中事物的
class 冰箱{
开门(){
}
关门(){
}
存储大象(大象 d){
}
}
class 大象(){
}
public static void main(String[] args){
冰箱 XX = new 冰箱(); // 冰箱就真的存在了
大象 YY = new 大象(); // 大象也存在了
// 调用功能
XX.开门();
XX.存储大象(YY);
XX.关门();
}
3:面向对象->局部变量与成员变量的区别
package com.itstar.demo01; public class Car { // Car的组成部分:属性和方法 // 需要驾驶它 // 颜色 String color; // 轮子 int count; // 定义跑的功能 public void run() { System.out.println("小汽车正在跑" + "..." + color + ".." + count); } }
package com.itstar.demo01; public class CarTest { public static void main(String[] args) { // 创建Car类的变量 Car c = new Car(); c.color = "red"; c.count = 4; c.run(); } }
package om.itstar.demon02; public class Car { String color; int count; public void run() { System.out.println("小汽车正在跑" + color + "..." + count); } }
package om.itstar.demon02; /* * 成员变量与局部变量的区别: * * 1、定义位置上的区别 * 成员变量,定义在类中,方法外 * 局部变量,方法内,语句内 * 2、作用域不同 * 成员变量,作用范围是整个类 * 局部变量,方法内,语句内 * 3、默认值不同 * 成员变量有自己的默认值的 * 局部变量没有默认值,不赋值不能使用 * 4、内存位置不同 * 成员变量,跟随对象进入堆内存内进行存储 * 局部变量,跟随自己的方法进入栈内存 * 5、生命周期不同 * 成员变量,跟随对象,在堆内存中存储。内存等待JVM清理,生命周期较长 * 局部变量,跟随方法,方法执行完要出栈。生命周期较短。 * */ public class CarTest { }
package com.itstar.demon03; public class Person { String name; }
package com.itstar.demon03; public class PersonTest { public static void main(String[] args) { int a = 1; function(a); System.out.println(a); // 1 } public static void function(Person p) { p.name = "韦桂金"; } public static void function(int a) { a += 3; } }
package com.itstar.demon04; /* * 描述人的这个事物: * 属性:姓名 年龄 * 方法:说话 * * 新的关键字:private 私有的属于成员修饰符 不能修饰局部变量 * 被private修饰,只能在自己的本类中使用->权限修饰 * * 对私有的变量,提供了公共的访问方式:方法 */ public class Person { // 人的姓名,成员变量 String name; // 人的年龄,成员变量 ->安全问题 负责(不会导致程序挂掉)但是违背了现实的情况 private int age; // 变量age被我们私有,提供方法让外部类使用 public void setAge(int a) { // 对a进行范围的限制 if(a < 0 || a > 200) { age = 18; }else { age = a; } } // 定义方法,对变量age获取值使用 public int getAge() { return age; } // 定义人说话的功能 public void speak() { System.out.println(name + "..." + age + "在说话中"); } }
package com.itstar.demon04; /* * 创建对象,对象调用自定义类的属性和方法 */ public class PersonTest { public static void main(String[] args) { // 创建person类对象 Person p = new Person(); // 对成员变量进行赋值 p.setAge(42); p.name = "huern"; p.speak(); System.out.println(p.getAge()); } }
package com.itstar.demo05; import javax.swing.plaf.synth.SynthSeparatorUI; /* * 类描述人: * 属性:姓名 年龄 * 方法:说话 */ public class Person { private String name; private int age; // get当中不用加this因为没有同名变量 public String getName() { return name; } // 成员变量name age的赋值 public void setName(String name) { this.name = name; // 增加阅读性,把局部变量赋值给他成员变量 } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void spek() { String name = "欧文 "; int age = 51; //System.out.println(this); System.out.println("人在说话" + this.name + "..." + this.age); } }
package com.itstar.demo05; /* * 测试类 */ public class TestPerson { public static void main(String[] args) { // 创建对象 Person p = new Person(); // 调用set方法,对成员变量赋值 p.setAge(18); p.setName("李总"); p.spek(); } }
package om.itstar.demo06; public class Person { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean compare(Person p) { // p1.age > p2.age? this是谁?谁调用的就是谁p1 return this.age > p.age; } }
package om.itstar.demo06; public class TestPerson { public static void main(String[] args) { // 测试Person类中的年龄比较功能 Person p1 = new Person(); Person p2 = new Person(); p1.setAge(20); p2.setAge(15); boolean b = p1.compare(p2); System.out.println(b); } }