java是高级语言中的面向对象语言!
1.面向对象:
1.分析当前例子中,参数者都有谁
2.分析 参与者应该具备的行为或者能力(动作)。
3.分析 参与者应该提供的属性。
2.面向过程 VS 面向对象
怎么做,每一步都需要由你来完成
谁来做,找准对象。
3.企业中完成项目开发步骤:
A.面向对象分析阶段
B.面向对象设计阶段
C.面向对象编码阶段oop---开发者处于该阶段
4.面向对象思想,解决问题步骤:
A.将参与者提取成一个类。例如Student类 public class Student{ }
B.确定参与者有应该具备的行为---定义方法。
C.确定参与者应该具备的属性信息---定义属性。 ====创建类!
D.根据类 创建对象, 对象.属性=值; 对象.方法()---解决问题。
5.局部变量和成员变量(属性)的区别:
1.声明位置不同: 局部变量在方法里; 成员变量在方法外
2.默认值不同: 局部变量没有默认值; 成员变量有默认值(String--null ;int---0 ;double--0.0)
3.作用域不同: 局部变量:从声明变量开始,到包裹的大括号结束。 成员变量:本类下(拿名直接用)+其他类(对象名.成员变量名)都可以使用
4.生命周期不同: 局部变量:从声明变量开始,到当前所在方法执行内。 成员变量:从创建对象开始,到对象bei垃圾回收机制销毁。
5.内存中存储位置不同: 局部变量 存储在栈里(栈里不稳定,随时清空) 成员变量 存储在堆里
6.同名的局部变量和成员变量在相同的作用域内,局部变量的优先级更高
6.static 静态的特点
A.当前类下的所有static资源,都会【提前加载】到 内存的常量池里。
B.使用static资源的时候,可以通过对象名.静态资源;也可以通过 【类名.静态资源】
7.构造方法:
什么是构造方法? 用来创建对象【实例化】 和 为对象的属性赋初始值【初始化】 构造方法的使用: 如果你没有手动创建构造方法的话,那么java程序讲给你提供一个 无参,方法体为空的构造方法; 如果你手动创建构造方法的话,那么程序将不再提供任何构造方法了。
构造方法的特点: public 类名(){
}
封装代码示例:
例一:
Person类
package com.jr.d722.fengzhuang;
public class Person {
public Person(String name,int age,double heihgt,double weight,String sex){ //和下面的Person互为构造方法的重载
this(); //构造方法之间互相调用,用this,并且必须在第一行
this.name=name; //加this,使name变为成员变量 name 属性
this.age=age;
this.heihgt=heihgt;
this.weight=weight;
this.sex=sex;
}
public Person(){ //和上面的Person互为构造方法的重载
System.out.println("创建人类对象");
}
//准备属性(成员变量)
String name;//姓名
int age;//年龄
double heihgt;//身高
double weight;//体重
String sex;//性别
//准备方法
public void introduce(){
//介绍所有属性特征
System.out.println("大家好!");
System.out.println("我叫"+name+",今年"+age+"岁");
System.out.println("我是一个身高"+heihgt+"体重"+weight+"的"+sex+"人");
}
public void work(String idea){
System.out.println(name+"的工作理念是"+idea);
}
}
TestBook类
package com.jr.d722.fengzhuang;
import com.jr.d722.fengzhuang.Person;
public class TestBook {
public static void main(String[] args) {
Person person1=new Person("阿宝",25,175,120,"男"); //Person类 person1对象 构造方法,需要用new来调用
/*person1.name="阿宝";
person1.age=25;
person1.heihgt=175;
person1.weight=120;
person1.sex="男";
*/
person1.introduce(); //对象.方法() 普通方法可以用.直接调用
System.out.println("**********************");
Person person2=new Person();
person2.name="美美";
person2.age=21;
person2.heihgt=165;
person2.weight=100;
person2.sex="女";
person2.introduce();
person2.work("工作是为了更好的生活");
}
}
例二:
汽车品牌---Che类
package com.jr.d722.fengzhuang1;
public class Che {
String pinpai;//品牌
String xinghao;//型号
String yanse;//颜色
int shisu;//时速
public void qidong(){
System.out.println(yanse+"的"+pinpai+xinghao+"启动");
}
public void tingzhi(){
System.out.println(pinpai+xinghao+"停止,"+"该车时速可以达到"+shisu+"km/h");
}
}
Test1类
package com.jr.d722.fengzhuang1;
import com.jr.d722.fengzhuang1.Che;
public class Test1 {
public static void main(String[] args) {
Che che1=new Che();
che1.pinpai="宝马";
che1.xinghao="M6";
che1.yanse="蓝色";
che1.qidong();
System.out.println("*********************");
Che che2=new Che();
che2.pinpai="奔驰";
che2.xinghao="500SEL";
che2.yanse="红色";
che2.qidong();
System.out.println("*********************");
Che che3=new Che();
che3.pinpai="奥迪";
che3.xinghao="R10";
che3.shisu=300;
che3.tingzhi();
}
}