(六)面向对象类与对象的概括

面向对象

1.软件开发方式
2.成员变量与局部变量
3.类与对象
4.构造器
5.封装
6.访问权限修饰符
7.JavaBean

软件开发方式

面向过程

强调的是我该怎么去做,执行过程是先干什么,再做什么,一步一步的执行过程

面向对象

面向对象强调的是我该让谁来做,强调的是让别人来帮我做事.

在面向对象的世界,如果要做事情,就必须要找对象

为什么存在面向对象?

对象是数据的载体,开发本质上就是把数据存入计算机中.
需要一种更复杂的数据类型一定是要自定义的
进而,软件开发就是把现实中的数据存储到计算机中,必须把共同的特征和行为抽象到计算机中作为类而存在,类又可以创建对象

软件开发数据的展示,一定要找对象
  ==>无论你做什么都需要找对象
  ==>在你眼里一切皆需要对象 =
  =>你眼里只有对象 
  ==>面向对象 
  ==>面向什么你就可以看到什么

面向对象的三大特征

  • 封装
  • 继承
  • 多态

抽象

抽象是一个概念,比如人类就是一个抽象的概念,但是具体到人的姓名,年龄,性别,就是对象的实例化了

所谓抽象,就是把现实中的事物,提取其公共特征和行为,也就是提取其成像的的部分,进而提取到计算机的过程.

–>计算机怎么描述这个抽象(定义一个类) -->通过类创建对象

抽象的步骤

1.归类并确定其类型,一般使用名词来定义类名
2.找到共同的特性,提取成字段,一般使用名词,抽象特征时要结合当前的业务需要
3.找到共同的行为,提取成方法,一般使用动词,抽象行为时要结合当前的业务需要


成员变量和局部变量

  • 成员变量:直接定义在类中,方法外 ,也可以称为字段 ,实例变量,作为类的成员
  • 局部变量:除了成员变量外,其他都是局部变量.一般在
1.方法内
2.方法的形参内
3.代码块中{}    

初始值

变量的初始化代表了要在内存中开辟空间,变量只有被初始化了,才能使用

成员变量:默认有初始值,不同类型有不同初始值,如下表格

局部变量:没有初始值,需要手动初始化

数据类型默认初始化值
byte,short,int,long0
float,double0.0
char一个空字符(空格) ,’\u0000’
booleanfalse
引用数据类型null,不引用任何对象

作用域

成员变量:在定义的类中都有效

局部变量:在自己所在的花括号内有效

注意:

1.{},称为代码块,可以形成作用域
2.作用域可以嵌套,内层作用域可以访问外层作用域的变量,外层不能访问内层作用域的变量

生命周期

成员变量:存储在中,随着对象的销毁而销毁

局部变量:存储在中,随着定义方法的调用结束而销毁

局部变量存储在方法中,每次调用方法都会在栈空开辟一块内存空间(栈帧),方法调用结束,栈帧被销毁,内存中存储的变量也自然销毁了


类与对象

类是一组具有相同特征和行为的对象的抽象描述(集合),类是一个群体概念

类可以看作是对象的数据类型

  • 成员变量表示状态(特征)
  • 成员方法表示行为(功能)

对象

对象是类这个群体中的一个唯一的,独立的个体,对象时个体概念.个体在程序中称为实体或者实例

任何事物都存在一定的功能,在面向对象中,任何事物都可以看成对象,正所谓"万物皆对象",你没有对象?那就new一个对象出来吧!

对象操作
  • 创建对象
1.类名 对象变量名 = new 类名();

2.匿名对象:创建对象之后没有赋值给某一个变量,只能使用一次
  new 类名();  
  • 对象操作字段(成员变量)
1.给字段设置数据
    对象变量名.字段名 =;
2.获取字段数据
    数据类型 变量 = 对象变量名.字段名;
3.对象调用方法
    对象变量名.方法(参数);


构造器

构造器(构造方法)作用:用来创建对象和给对象做初始化操作

语法:

[修饰符] 类型(参数){
    //方法体
} 
1.构造器名称和类型相同
2.不能定义返回值类型
3.构造器中不能使用return语句    

默认构造器

如果一个类没有显示的定义无参构造方法,jvm默认会分配一个无参构造方法

如果开发者显示定义了无参构造方法,jvm不再分配无参构造

例如定义猫类的无参构造

public Cat(){
    
}

有参构造器

如果想在构建对象时就给对象赋值,可以使用有参构造

在带参数和不带参数的构造器,他们之间的关系构成重载关系

public class Cat {
String name;
int age;
//无参数构造器
     public Cat() {
   }
//带参数构造器
   public Cat(String n, int a) {
    name = n;
age = a;
}
}


封装

面向对象三大特征之一:封装

把对象的字段和方法独立放在一个模块(类)中包装起来,隐藏对象的数据和功能的实现细节,通过getter,setter的方式来拿到数据

定义猫类

public class Cat {
    private String name;
   private int age;

    void catSay(){
        System.out.println("喵喵喵");
    }
    public  Cat(){

    }


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

    public void setName(String name){
         this.name=name;
    }
    public String getName(){
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
}   

测试类

public class CatDemo {
    public static void main(String[] args) {
      

        Cat c2= new Cat();
        c2.setAge(22);
        c2.setName("kent");
        System.out.println(c2.getName());
        System.out.println(c2.getAge());

    }
}


访问权限修饰符

修饰符类内部同一个包子类任何地方
private
protected
public


JavaBean

一种规范

  • 类必须使用public修饰
  • 必须保证有 公共无参数构造器
  • 字段使用private修饰(私有化),提供getter和setter方法

getter方法:仅仅用于返回某一个字段的值

setter方法:仅仅用来给某一个字段设置值

定义JavaBean规范

学生类

public class Student {
    private String name; //姓名
    private int age; //年龄
    private String gender; //性别
    private double enScore;//英语成绩
    private double mathScore;//数学成绩
    private double cnScore;//语文成绩


    //无参构造
    public Student(){
    }

    //有参构造
    public Student(String name, int age, String gender, double enScore, double mathScore, double cnScore) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.enScore = enScore;
        this.mathScore = mathScore;
        this.cnScore = cnScore;
    }

    public void setName(String name){
        this.name=name;
    }

    public String getName(){
        return name;
    }

    public void SetAge(int age){
        this.age=age;
    }

    public int getAge(){
        return age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public double getEnScore() {
        return enScore;
    }

    public void setEnScore(double enScore) {
        this.enScore = enScore;
    }

    public double getMathScore() {
        return mathScore;
    }

    public void setMathScore(double mathScore) {
        this.mathScore = mathScore;
    }

    public double getCnScore() {
        return cnScore;
    }

    public void setCnScore(double cnScore) {
        this.cnScore = cnScore;
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值