Java复习笔记入门阶段07:面向对象

1.面向对象概述

  • 更加符合现实生活;

  • 面对问题,寻找合适的工具,调用合理的方法,解决问题;

  • 复杂问题,梳理流程,组合工具和使用方法,灵活应对复杂局面,更具拓展性和维护性;

  • 没有合适的工具,就自己设计,自己用;

  • 自己设计的工具,足够范用,足够安全稳定,可以开源给别人用;

2.设计对象及注意事项

  • 类(设计图):对象共同特征的描述;

  • 对象:真实存在的具体实例;

  • 结论:java中,必须先设计类,才能创建对象并使用

2.1类注意事项:

首字母大写,满足驼峰式;

一个java文件可以定义多个class,只可以有一个public修饰,且必须是用来修饰文件名;

3.内存机制

3.1两个对象内存图

  1. 运行Test.class,main方法存入方法区,在栈内存开辟main方法空间;

  2. 执行第一行,创建变量Car c1 存入栈内存;

  3. 执行new Car(),在堆内存中开辟对象空间,对象属性值为默认,最后存入成员方法引用地址(指向方法区方法);

  4. 将空间地址赋给变量c1;

  5. 根据c1地址和属性索引给c1赋值(原理同数组赋值类似);

  6. c1.start()是c1通过地址找到对象,再找到成员方法引用地址,找到start方法,start()方法提取到栈内存运行;

  7. 由于start()方法是通过c1路径调用,内部属性值访问c1;

3.2 两个对象指向同一个内存图

  1. 基本原理与上方相同;

  2. 将s1地址赋给s2,s2修改了堆内存中数据,s1和s2输出值都变化;

3.3 垃圾回收装置

当堆内存中对象,没有被任何变量引用(指向)时,就会被判定为内存中垃圾;

Java存在自动垃圾回收器,会定期清理;

4.构造器

4.1 构造器作用

  • 定义在类中,可以用于初始化一个类的对象,并返回对象地址;

  • new Car();中的Car()便是构造器

4.2 构造器格式

修饰符 类名(){

//无参构造器

}

修饰符 类名(形参列表){

//有参构造器

}

    public Car(String name, double price) {
        this.name = name;
        this.price = price;
        System.out.println("有参构造器被调用");
    }

    public Car() {
        System.out.println("无参构造器被调用");
    }

4.3调用构造器得到对象格式

类 变量名 = new 构造器;
Car c = new Car();
Car car1 = new Car("胜利冲锋", 19.9);

4.4 构造器的分类和作用

  • 无参构造器(默认存在):初始化对象时,成员变量数据均采用默认值;

    • 一旦有参构造器创建;再用无参构造器需要自行创建

  • 有参构造器:初始化对象时,同时可以接收参数为对象赋值;

4.5 this关键词是什么

  • 可以出现在构造器中,方法中;

  • 代表当前对象地址

4.6 this关键字作用

可以用于指定访问当前对象的成员变量、方法;

    public Car(String name, double price) {
        this.name = name;
        this.price = price;
        System.out.println("有参构造器被调用");
    }


    public void goWith(String name) {
        System.out.println(this.name+"和"+name+"比赛!");
    }
	Car car = new Car();
    car.name = "旋风冲锋";
    car.goWith("飓风音速");
    //旋风冲锋和飓风音速比赛!

5.封装

  • 面向对象三大特征:封装、继承、多态

  • 封装:如何正确设计对象的属性和方法;解决属性和方法属于哪个对象问题;

    • 封装原则:对象代表什么,就得封装对应数据,并提供数据对应的行为;

    • 基本思想:决定属性和行为的归属问题,行为是用来处理对应属性的;人吃饭睡觉;门开关;票地址价格买票

5.1 进行更好的封装

  • 对成员变量使用private(私有隐藏)关键字修饰

    • private修饰成员只能在当前类中访问;

  • 为每个成员提供配套的public修饰的getter和setter方法,

    • 方便取值和赋值

public class Student {
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age>0 && age<200){
            this.age = age;
        }else {
            System.out.println("不符合符合规范");
        }
    }
}


        Student s = new Student();
        s.setAge(-99);
        System.out.println(s.getAge());
        s.setAge(99);
        System.out.println(s.getAge());


不符合符合规范
0
99

5.2 特征的含义

所谓特征,指java的基本特点,即使毫无意义,通常也要满足这样的设计要求来编写;

6.标准 JavaBean

JavaBean:实体类,其对象用于在程序中封装数据;

6.1成员变量和局部变量区别

区别成员变量局部变量
类中位置类中,方法外常见方法内
初始化值有默认值,无需初始化需初始化
内存位置
生命周期随对象创建存在,随对象消失随方法存在
作用域所归属的大括号内

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值