面向过程与面向对象的区别
注重点重点不同,面向过程注重的是过程,我是事务的执行者;面向对象注重对象,我是事务的指挥者。
面向对象的优点
1.将复杂问题简单化
2.从事物的执行者转化为事物的指挥者
3.跟贴近人的思维,懒人思想
类和对象分别是什么
类:一类抽象事物的描述(模板)
对象:用类创建出来的就是对象(具体的事物)
成员变量与局部变量
区别:
成员变量和局部变量 区别
1.书写位置
成员变量:类中,方法外
局部变量:方法中或方法上
2.在内存中表现
成员变量:堆内存中
局部变量: 栈内存中
3.生命周期
成员变量:随着对象进入堆内存中创建,随着对象销毁而销毁
局部变量:随着方法的调用而入栈,随着方法结束而销毁
4.作用域
成员变量:整个类中
局部变量:方法中
5.初始值
成员变量:跟堆内存一样 默认初始值
局部变量:默认没有初值,不给初值直接编译报错
相关代码
public static void fun2(Person p) { p.name = "yy"; p.age = 23; } public static void main(String[] args) { int a = 100; fun1(a); System.out.println(a); Person p1 = new Person(); p1.name = "hh"; p1.age = 24; fun2(p1); p1.sayHi(); } }
什么是匿名对象
一般在1.方法传参数时使用
2.只调用一下方法(不赋值的情况下)
实例
public class Demo05 { public static void setNameAndAge(Person p,String name,int age) { p.name = name; p.age = age; } public static void main(String[] args) { //创建两个person对象 并赋值 //将重复代码抽成一个方法 Person p1 = new Person(); p1.name = "wanglong"; p1.age = 16; setNameAndAge(new Person(), "kun", 20); } }
好处:使用匿名对象 当方法参数,减少代码量 使用方便
封装
本质就是隐藏代码的实现和属性,但也需要开放访问方式(方法)才能获取和修改。
好处:1.增加代码的复用性 2.提高代码的安全性
关键字(权限修饰符)
private 私有的,被修饰的属性只能本类中访问
class Phone{ //java bean 对象(Java实体类创建出来的对象) // 1.声明成员变量 都需要私有化 // 2.给每一个成员变量提供 setter/getter方法 //3.必须提供 无参的构造方法 private String phoneName; //对外开放访问方式 //获取方法 public String getPhoneName() { return phoneName; } //修改方法(设置方法) public void setPhoneName(String name) { //就近原则 //关键字 this 代表的是本类的对象 //this.成员变量 获取本类的成员变量 //this.成员变量 = “哈哈” //this.成员方法 调用本类的成员方法 //谁调用了这个方法谁就是this this.phoneName = phoneName; } private String color; //命名规范 //获取 get + 成员变量名(首字母大写) //修改 set + 成员变量名(首字母大写) //标准写法 set方法没有返回值 public String getColor() { return color; } public void setColor(String color) { this.color = color; } }
构造方法
构造方法,用来对对象的成员变量进行初始化
分为有参和无参两种构造方法。
有参构造方法
public Pen(String name,String color) { this.name = name; this.color = color; System.out.println("我是pen的有参构造方法"); }
无参构造方法
public Pen() { this.name = "圆珠笔"; this.color = "绿色"; System.out.println("我是pen的无参构造方法"); }
类中的书写顺序
1.成员变量
2.构造方法
3.成员方法
4.get/set方法
class Shoe{ private String name; private String color; public Shoe(){ this.name = "耐克"; this.color = "红色"; System.out.println("我是shoe的无参构造方法"); } public Shoe(String name,String color) { this.name = name; this.color = color; System.out.println("我是shoe的有参构造方法"); } public void sayHi() { System.out.println(this.name + " " + this.color); } public void run() { System.out.println("跑得快"); } public void feel() { System.out.println("穿着舒服"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } }