p60 什么时面向对象

  - 面向过程思想步骤清晰简单,第一步做什么,第二步做什么...,适合处理简单的问题
  - 面向对象思想是分类的思维模式,适合处理复杂需要多人协作的问题,解决问题首先思考需要哪些分类,然后对这些分类进行单独思考,对分类下的细节进行面向过程的思索
  - 面向对象编程( Object-Oriented Programming ,OOP )的本质是:以类的方式组织代码,以对象的形式封装数据
  - 面向对象的三大特性:封装、继承、多态
  - 从认识论角度考虑,是先有对象后有类,对象是具体的事物,类是抽象的,是对对象的抽象
  - 从代码运行的角度考虑,是先有类后有对象,类是对象的模板

 

p63 类与对象的创建

1、类与对象的关系
  1)类是抽象的数据类型,它是对某一类事物整体的描述和定义,并不能代表某一个具体的事物
  2)对象是抽象概念/类的具体实例,是能够 体现出具体特点,展现出具体功能的,而不是抽象的概念
    - 张三就是人的一个具体实例,张三家的旺财就是狗的一个具体实例

2、创建与初始化对象
  - 使用 new关键字创建对象
  - 使用new创建对象时,除了分配内存空间之外,还会给创建好的对象进行默认初始化,及调用类的构造器。
  - 类只包含属性/字段/成员变量和方法两种语句
  - 类是抽象的需要实例化后才能使用,实例化后返回一个自己的对象
  - 一个项目应该只有一个main方法

 


  

p64 构造器详解

1、类中的构造器也叫构造方法
  - 创建对象时是必须调用构造方法的
  - 构造器名和类名必须相同
  - 不能有返回类型,也不能写void

2、new实例化类的本质,是调用类的构造器
  - 构造器是用来生成对象的
  - 构造器可以用来初始化属性的值
  - 一旦定义了有参构造器,无参构造器就必须显示定义才能使用

 //构造器示例:

java基础学习笔记 - 面向对象课时_初始化java基础学习笔记 - 面向对象课时_实例化_02
public class D01{
    public static void main(String[] args){
        //new实例化类 创建对象
        
        Person person = new Person();        //调用无参构造器
        
        Person person2 = new Person("hello java");    //调用有参构造器
        
        System.out.println(person.name);    //java
        System.out.println(person2.name);    //hello java
        
    }
}

//定义Person类
public class Person{
    String name;    //null
    
    //显示定义无参构造器
    public Person(){
        this.name = "java";        
    }    
    
    //定义一个有参构造器
    public Person(String name){
        this.name = name;
    }    
}
View Code

 


 

 

p65 创建对象的内存分析

 

 

 

 

 

面向对象示例2:

java基础学习笔记 - 面向对象课时_初始化java基础学习笔记 - 面向对象课时_实例化_02
public class D02{
    public static void main(String[] args){
        
        //new Pet类,调用了构造器,创建了对象,给字段赋值,调用了类的方法,输出了对象的属性
        Pet dog = new Pet();
            
            dog.name = "旺财";
            dog.age = 3;
            dog.shout();
        
        System.out.println(dog.name);
        System.out.println(dog.age);
        
    }
}


//Pet类
public class Pet{
    
    String name;
    int age;
    
    //无参构造器
    
    //定义一个方法
    public void shout(){
        System.out.println("叫声旺旺");
    }    
}
View Code

 

 

 

 

//即使再小的帆也能远航2021-11-02