面向过程与面向对象的区别
注重点重点不同,面向过程注重的是过程,我是事务的执行者;面向对象注重对象,我是事务的指挥者。
面向对象的优点
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;
}
}