oo面向对象

OO 面向对象
OOP 面向对象编程
OOA 面向对象分析
OOD 面向对象设计
面向对象:围绕的是我这个软件是由那些部分完成的,或者说是由那些对象来做的。
在已经找到的问题域中的对象后,我们就要编写一个类来描述每一个对象的属性和行为。
属性是指对象身上有什么值数据。
面向过程:我要解决问题,我要做那些事,它的完成流程是怎么样,就问题解决问题。
行为是对象可以做什么,或者我们想这些对象做什么
什么对象:
万物皆对象,对象因关注而产生。
类是对象的抽象,对象是类的实例。
类是具有相同属性和行为的一组对象的抽象。
在软件中,我们用类来模拟现实生活中的实体。

java中的类用关键字class声明,java源码文件中只能含一个公用(public)类,文件必须与公用类的类名相同,文件扩展名为“java”

/**
 定义一个学生类
 * */
public class Student {
    /**
     * 定义类的本质就是在定义一种数据类型。
     *  类可以是一种比基本数据类型复杂的多的数据类型,它由属性和行为组成。
     *  属性可以换多个,而且有各自的数据类型。
     *  行为是类自带的方法,可以直接完成各自各种属于该类的对象和行为组成。
     *
     * 属性是类身上的值数据,其形式就是变量属性和常量属性。
     *
     * 变量属性:声明语法采用的是变量的语法,只是比之前的普通变量一个访问修饰符。
     *  在效果上,该类 所有的对象都会自动具备属性,但是各个对象可以有各自不同的值。
     *
     * 常量属性:声明语法采用的是常量的语法,也只是多了一个访问修饰符。
     *  在效果上,该类所有的对象都会自动具备该属性,只是值都一样,且不能更改。
     *
     *  属性的变量常量和java基础学的变常量有什么区别???
     *
     *
     *
     * */
    /**
     * 名字
     */
    public String name;
    /**
     * 年龄
     */
    public int age;
    /**
     * 成绩
     */
    public int[] scores;
    /**
     * 科目
     */
    public String subject;
    /**
     * 常量,班级
     */
    public final String CLSS_NAME = "J174";

    /**
     *行为:在语法表象上,就是方法的定义。
     * 它提供的组成部分,表示对象能够什么事情或提供什么功能。
     *
     * 在面向对象中,static 是一种特殊情况,90%的方法都是没有static的。
     * java基础知识为了避免面向对象的概念,从现在开始,直到学习了 static之前,不写。
     *
     * */

    /**
     * 自我介绍
     */
    public void introduce() {
        System.out.println("我是" + name + ",今年" + age + "岁");
    }

    /**
     * 产生对象的基本语法,使用new关键字,后面跟上类名();
     * 数据类型 变量名 = new 后面跟上类名();
     */
    /**
     * 属性的默认初始值:基本数据类型为0,引用数据类型为null
     *
     * Student stu ==== 只会在内存一个4个字节的变量
     *              这个变量存放即将要指向真正的Studtent 对象的引用
     *              所以又被称之为“对象名空间”
     * new Student() ===== 这才是产生一个新的Student 对象
     *              该对象具备一个整体的空间存放各个属性
     *              此空间的大小由对象身上的属性大小总和决定。 -------------Student 那么的大
     * 类和对象的关系:
     *  类是模板,不能直接使用,对象才是具体的实际存在,所以对象有又被称之为某个类的的“实例”
     *    通过类产生对象的动作被称之为“实例化”
     *
     * */
    // 操作对象 --- (属性和方法) 对象家 “ . ”操作符 这个. 可以理解为的
    /**
     * "." 操作符在这里理解为的是时候把他理解为“的”字
     *  stu的name ==== stu.name
     *  stu的age ===== stu.age
     *
     * */
    
}

定义一个类

public class Student {
    /**
     * 名字
     */
    public String name;
    /**
     * 年龄
     */
    public int age;
    /**
     * 成绩
     */
    public int[] scores;
    /**
     * 科目
     */
    public String subject;
    /**
     * 常量,班级
     */
    public final String CLSS_NAME = "J174";

使用一个类:

import Studet.Student;   // 导入一个类
import java.util.Arrays; // 导入一个数组打印包
public class Main {
    public static void main(String[] args) {
        Student stu = new Student(); // 调用语法
        stu.age = 18;
        stu.name = "zhangsan";
        stu.scores = new int[5];
        stu.scores[0] = 1;
        System.out.println(Arrays.toString(stu.scores));
        System.out.println(stu.age);
        System.out.println(stu.name);
        System.out.println(stu.CLSS_NAME);
    }
}

null 空 什么都没有;
对象的销毁时由java中的垃圾回收机制(GC)来完成的。
它有其自身的算法规则,程序员是没有办法通过代码控制的,控制它什么时候回收,回收什么东西。
在垃圾回收的众多算法中有一条基本规则,它会自动回收没有引用指定的对象。
所以:
1、如果想某个对象在程序途中被回收,那么我们可以主动的把它指向的引用赋值为null。 =null。
类里面是空的就会报空指针异常
NullPointerException 空指针异常;
2、如果对象的引用变量时(对象名空间)是局部变量,那么它所属的模块执行结束。
这个变量的生命周期就到头 ,变量就会消失,那么它所指向的对象也就没有引用指向了,,也会被回收。
3、程序员在代码级别只有一句代码可以和垃圾回收产生交集,System.gc();
注意:这句代码的作用不是主动调用垃圾回收,而是召唤垃圾回收,但是垃圾回收收集器想不想收,什么时候收 ,收那些垃圾还是由它自身算法决定。
new student().gae = 30;
如果一个对象只用一次,那么可以不给该对象起变量名,new出来就直接使用,用完后由于没有引用,就会被回收掉。

访问修饰符一共三个关键字,四种情况;
现在只先掌握两种:public(公共的),private(私有的);
public 修饰的属性或方法,可以在同项目中任何位置访问。
private 修饰符的属性或方法,可以在本类中访问。

变量属性基于 java的官方规范,应该定义为private,然后提供get/set方法,让外部操作 取值/赋值。
get 方法被称之为,访问器 ;只能访问
set 方法被称之为:修改器 ;可以修改

两者在格式和命名上,都有标准的规范。
书写格式:private String name;
当全局变量(属性)和局部变量 重名的时候要访问全局变量就要 + this.访问的名字
此时的this相当于生活中每一个对象说的“我”,指的是当前对象。
this好处:在开发中,this,会有提示,可以提高开发效率。
建议:凡是在访问本类中当前对象的属性和行为时,都养成写this的习惯。
不用考虑什么时候要什么时候不要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值