一、面向过程与面向对象
面向过程: 从事物执行者的角度思考问题,我该干什么 重点在过程----事物流程
面向对象: 从事物的指挥者角度思考问题,我应该找谁干什么 重点在对象
面向对象的优点:
1.将复杂问题简单化
2.从事物的执行者转化为事物的指挥者
3.更贴近人的思维(懒人思想)
二、类和对象
类是Java中最基本的单位,是一类抽象事物的集合 对抽象事物的描述(模板)
对象: 用类创建出来的具体的事物就是对象
抽象描述类:
类中的属性是指成员变量
类中的行为是指成员方法
class Student{
//属性(成员变量 实例变量)类中方法外
//行为(方法) 跟函数一样 就static先不写 类中
String name;
int age;
String gender;
//方法
public void eat(){
System.out.println("吃饭");
}
public void playGame() {
// TODO Auto-generated method stub
}
public void sleep(){
System.out.println("睡觉");
}
public void play(String game){
System.out.println("打"+ game);
}
}
三、成员变量与局部变量
成员变量与局部变量的区别:
1.书写位置不同:
成员变量: 类中方法外
局部变量: 方法中或方法上(参数位置)
2.在内存中的表现不同:
成员变量: 堆内存中
布局变量: 栈内存中
3.生命周期不同:
成员变量: 随着对象进入堆内存中创建,随着对象的销毁而销毁
布局变量: 随着方法的调用而入栈,随着方法的结束而销毁
4.作用域不同:
成员变量: 整个类中
局部变量: 方法中
5.初始值不同:
成员变量: 跟堆内存一样,有默认的初始值 0 null
局部变量: 默认没有初值 不给初值编译时会报错 (局部变量声明时必须带有初值
四、同名类
在同一个项目中可以有同名的类,创建在不同的包下
创建不同包下的同名类,需要指定完整的包名来创建对象
一般情况下不建议写同名类
例如: 在包3和包4下各创建一个person类
//创建一个包3类的person对象
Person p1 = new Person( );
//在继续创建一个包4类下的person对象
com.bao3.Person p2 = new com.bao3.Person( ); // 需要指定完整的包名
五、匿名对象
匿名对象: 没有名字的对象
1. 一般 在方法传参的时候调用
2. 只调用一下方法(不赋值的情况下)
使用匿名对象当方法的参数 可以减少代码量,方便使用
匿名对象:没有名字的对象
* 1.在方法传参数的时候使用
* 2.只调用一下方法(不赋值的情况下)
*
* */
public class Demo05 {
public static void setNameAndAge(Person p,
String name,
int age) {
p.name = name;
p.age = age;
p.sayHi();
}
public static void main(String[] args) {
//创建 两个person对象 并赋值
Person p1 = new Person();
p1.name = "wanglong";
p1.age = 16;
p1.sayHi();
Person p2 = new Person();
setNameAndAge(p2, "menglong", 8);
//使用匿名对象 当方法参数
//好处:减少代码量 使用方便
setNameAndAge(new Person(), "kun", 20);
//匿名对象 也是对象 也可以赋值属性 调用成员方法
new Person().name = "xin";
// 只调用方法可以使用匿名对象
// 测试方法时 可能会使用
}
}
六、封装与构造方法
封装
Java中 写 方法、函数 就是封装的一种
封装相当于隐藏了代码的实现和属性 不能随意修改
需要开放访问的接口(方法 方式) 来获取或修改封装的代码
优点:
1.提高了代码的复用性
2.提高了代码的安全性
关键字 中的 权限修饰符--> private 私有的
被private修饰的属性 只能本类中访问
java bean 规范 对象
1.声明成员变量 都需要 私有化2.给每一个成员变量提供 set/get方法+
3.必须要有 无参的构造方法