【Java基础】 面向对象(1)

面向对象(1)

1. 面向对象的思想及其特点
1.1 面向对象的思想
面向对象即把构成问题的事务按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。
1.2 面向对象的特点
  • 封装性
  • 继承性
  • 多态性
2. 类(引用数据类型)与对象
2.1. 类的定义
class 类名{
    成员变量;
    成员方法;
}

脚下留心:

class Student {
    int age = 30;  // 成员变量
    void read(){
        int age = 50;  // 局部变量
        System.out.println(age)
    }
}
// 允许成员变量与局部变量同名,但是在成员方法中访问到的变量为局部变量
2.2. 对象的定义
类名 对象名 = new 类名()
Student s = new Student()
// Student s 即声明了一个Student类型的变量s
// new Student() 即创建了一个Student类的一个实例对象
// = 即将对象地址赋给变量s

stu对象的内存分配
在这里插入图片描述

对象名保存在栈内存中,对象属性信息保存在堆内存中。
2.3 对象的引用传递

引用数据类型:内存空间可以同时被多个栈内存引用

一个栈内存空间只可指向一个堆内存空间

2.4 访问控制

1.访问权限控制

访问范围privatedefaultprotectedpublic
同一类中
同一包中的类
不同包的子类
全局范围

2.注意事项

(1) 类名只可用public修饰或者不写修饰符

(2) 局部变量无访问权限

(3) 若java文件中所有类均未使用public修饰,则文件名可以为一切合法的文件名;否则文件名必须与public修饰的名字相同

3. 封装
3.1 封装的实现
  • 使用private 关键字修饰类的属性
  • 外界访问必须通过setter 和 getter 方法
3.2 构造方法

(1)构造方法的构造

  • 名称与类名一致
  • 名称前不可有任何返回值类型的声明
  • 不可使用return 返回一个值;但是可以单独写return语句作为方法的结束

(2) 构造方法的重载: 参考方法的重载

(3)若未定义构造方法则会默认创建一个空的构造方法

4. this 关键字

(1) 使用this调用本类的属性

public Student(String name,int age){
    this.name = name;
    this.age = age;
}

(2) 使用this调用成员方法

(3) 使用this调用本类的构造方法

  • 可以在一个构造方法中使用this调用其他的构造方法 this(参数1,参数2…)
  • 不可在成员方法中通过this调用构造方法
  • 在构造方法中,使用this调用的构造方法的语句必须位于第一行
  • 不可在一个类中的两个构造方法中使用this相互调用
5. 代码块
5.1 普通代码块
{
    // 里面是普通代码块的内容
}
5.2 构造块(直接在类中定义的代码块)
{
    // 里面是构造代码块内容  与构造方法同级
}
// 实例化对象时会在执行构造方法之前执行构造代码块
5.3 静态代码块(用static修饰的代码块称为静态代码块)
类被加载时,静态代码块会被执行;
类只加载一次,静态代码块只被执行一次
5.4 同步代码块
5.5 各代码块的执行顺序

静态代码块 > 构造代码块 > 构造方法

6. static 关键字
6.1 静态属性(全局属性)

访问格式

类名.属性名

只可修饰成员变量,不可修饰局部变量

6.2 静态方法

访问格式

类名.方法   实例对象名.方法
  • 静态方法只能访问静态成员,非静态成员要创建对象才会分配内存,静态方法在被调用时可以不创建任何对象
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值