复学day08

对象

Java的核心思想便是OOP(Object-Oriented Programming,面向对象编程):以类的方式组织代码,以对象的组织(封装)数据。

面向过程&面向对象

面向过程思想:步骤清晰简单,第一步做什么,第二步做什么(线性思维)

面向对象思想:物以类聚,分类的思维模式,首先对解决的问题分解架构,然后对每个架构进行独立思考,继而对架构进行面向过程解决(对于描述复杂的事物,为了宏观上把握、从整体上合理分析,便是用面向对象的思路来分析整个系统,但是,具体到微观操作,仍然需要面向过程的思路去处理

那么什么是对象,什么又是类呢?

官方定义:

类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。

对象就是类的实例--具体

举例:手机类细至对象就是具体到某一部手机

一个类从结构上划分,分为两部分:属性、方法。

一个对象通过new创建出来,格式:类 对象名 = new 类;

在使用new关键字创建对象的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用

构造器

类中的构造器也成为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:

1、必须和类的名字相同

2、必须没有返回值类型,也不能写void

public class Person{
    String name;
}
public class Application{
    public static void main(String[] args){
        Person person = new Person();
    }
}

在过去学习过程中有出现这种情况,表面上并没有看到构造器相关的东西,但如果去查看Person类对应的class文件,会发现,该类在加载时其代码如下:

public class Person{
    String name;
    public Person(){
    }
}

继而会发现,Application类中所调用的new Person实例对象是通过public Person(){}这个无参构造器生成的。只因若程序员并未声明有参构造,那么Idea工具便会在编译java文件转class文件时自动生成无参构造。

ps:若声明有有参构造,则必须声明无参构造;new关键字本质便是调用构造器生成对象。

构造器的作用:用来初始化值

public class Application{
   public static void main(String[] args){
        Pet dog = new Pet();
       dog.name="xx";
       dog.age=x;
       dog.shout();
       System.out.println(dog.name);
       
       Pet cat = new Pet();
       ...
       ...
    }
}

就这一段代码的底层在计算机内存空间上大概的分布如下图

img

封装

封装的定义:

是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

封装的意义:

封装可以当作成程序的保护屏障,之前编写代码时明显能够感觉到,对于某类的具体属性可以通过其他方式进行访问覆盖赋值,由此便设计出封装的机制,防止某类的代码和数据被外部类定义的代码随机访问。

封装的优点:

封装可以减少耦合;内部结构私有化,可以自由修改;对成员变量的控制更精确

实现方式,在对类的属性创建时用privat修饰,如下

public class Person{
    privat String name;
    private int age;
}

通过上述方式,在其他类创建调用时便无法直接对Person类中的name、age属性赋值,此时对于Person类中的name、age属性操作需调用其内部方法(get、set),故完整的的Person类格式应如下:

public class Person{
    private String name;
    private int age;
    public int getAge(){
        return age;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public void setName(String name){
        this.name = name;
    }
}
posted @ 2020-11-17 18:27  何安生  阅读(62)  评论(0)    收藏  举报