java笔记寒假08-面向对象编程(含构造器)

Posted on 2022-01-06 10:41  超喜欢小小  阅读(32)  评论(0)    收藏  举报

第八天--面向对象编程(含构造器)

一、初识面向对象

  Java的核心思想就是面向对象编程(oop)

  (oo)就是面向对象

  属性加方法就是类

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

       面向过程适合处理一些较为简单的问题

       线性思维

面向对象思想:物以类聚,分类的思维模式。思考解决问题需要哪些分类,再对分类进行单独思考

       适合处理复杂的问题,适合处理需要多人协作的问题

  对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,需要使用面向对象的思路来分析整个系统。具体到微观操作,仍要面向过程的思路去处理。

  面向对象编程的本质就是:以类的方式组织代码,以对象的形式封装数据

  抽象是核心的思想

  三大特性:封装

       继承

       多态

  从认识论角度考虑是先有对象后有类,对象是具体的事物,类是抽象的,是对对象的抽象

  从代码运行角度考虑是先有类后有对象,类是对象的模板。

二、回顾方法的定义

 package com.oop.Demo01;
 //类
 public class Demo01 {
 
     //main方法
     public static void main(String[] args) {
 
    }
     /*
     修饰符 返回值类型 方法名(...){
       方法体
       return 返回值;
     }
      */
     //返回值类型是void时,可以不写return,也可以写return;
     //return代表结束方法,返回一个结果
 }

 

 

三、回顾方法的调用

 //静态方法的调用
 public class Demo02 {
     public static void main(String[] args) {
         say();
    }
     //静态方法
     public static void say(){
         System.out.println("hello world");
    }
 
 }
 //非静态方法的调用
 public class Demo02 {
     public static void main(String[] args) {
         Demo02 demo02 = new Demo02();
         demo02.say();
    }
     //非静态方法
     public void say(){
         System.out.println("hello world");
    }
 }

静态方法是和类一起加载的 普通方法是类实例化之后才存在的,所以静态方法不可以调用普通方法

实际参数和形式参数的类型要对应

值传递

 public static void main(String[] args) {
         int a = 1;
         System.out.println(a); //1
         change(a);
         System.out.println(a); //1
    }
 
     public static void change(int a){
         a = 10;
    }

引用传递

 //引用传递:对象,本质还是值传递
 public class Demo04 {
     public static void main(String[] args) {
         Person person = new Person();
         System.out.println(person.name);//null
 
         Demo04.change(person);
         System.out.println(person.name);//哈利波特
 
    }
     public static void change(Person person){
         //person是一个对象,指向的--->Person person = new Person;这是一个具体的人,可以改变属性
         person.name="哈利波特";
    }
 }
 //可以有很多个class类,但只有一个public class
 //定义了一个person类,有一个属性:name
 class Person{
     String name; // null
 }

四、类与对象的创建

1、类与对象的关系

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

person类、cat类、car类等等

对象是抽象概念的具体实例,比如,张三是人的一个实例,他家的狗旺财是狗的一个实例

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

 package com.oop.Demo02;
 
 //一个项目应该只存在一个main方法
 public class Application {
     public static void main(String[] args) {
 
         //类:抽象的,要将它实例化
         //类实例化后会返回一个自己的对象
         //student对象就是一个Student类的具体实例
 
         Student xiaoming = new Student();
         Student xiaohong = new Student();
         Student student = new Student();
         xiaoming.name="小明";
         xiaohong.name="小红";
 
         xiaoming.age=3;
         xiaohong.age=3;
 
         System.out.println(xiaohong.age);
         System.out.println(xiaoming.name);
     
 }
 package com.oop.Demo02;
 
 //学生类
 public class Student {
     //属性:字段
     String name;//null
     int age;//0
 
     //方法
     public void study(){
         System.out.println(this.name+"在学习");
    }
     //this代表当前这个类
 }

五、构造器详解(很重要,要掌握)

类中的构造器也称为构造方法,是在进行创建对象时必须要调用的。

一个类即使什么都不写,也会存在一个构造方法。

构造器的特点:必须和类的名字相同

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

 package com.oop.Demo02;
 
 public class Person {
     String name;
 
     //无参构造
     //可以实例化初始值
     //1、使用new关键字,本质是在调用构造器
     //2、用来初始化值
     public Person(){
         this.name="wuhu";
    }
 }
package com.oop.Demo02;

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

System.out.println(person.name); //wuhu
}

}

 

 

 

 

快捷键生成构造器 alt+insert

this.是当前对象

六、创建对象内存分析

 

 

方法区也是堆中的

new出来的对象可以直接去调用静态方法区中的方法

 

 

//这部分不想写笔记了,直接截图,芜湖

七、小结

3、是对象的引用,图片中错写为对应的引用