java、day10 面向对象 回顾方法 java值传递 类与对象的关系 构造器创建对象等

1.面向对象

面向对象编程:oop (object-oriented programming) 面向对象:oo

对于描述复杂的事物,为了从宏观上把握、从整体上合理分析。我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理问题(属性+方法=类)

1.0死记

以类的方式组织代码,以对象的形式组织封装数据,是抽象出来的

1.1什么是面向对象

1.1.1面向过程思想

  1. 步骤清晰 ,第一步做什么,第二步做什么

  2. 面对过程适合处理一些简单的问题

1.1.2面向对象思想

  1. 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。

  2. 面向对象适合处理复杂的问题,适合处理多人协作的问题

1.1.3三大特性以及从认识论角度和从代码运行角度

  1. 封装

  2. 继承

  3. 多态

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

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

2.回顾方法

2.1方法的定义

 //Demo02  类  day9的笔记也是有的
 public class Demo01 {
 
     public static void main(String[] args) {
 
    }
     /* 方法: 修饰符 返回值类型 方法名 (形参){
     *       方法体
     *       return 返回值;
     *         *}
       */
     public String saysomething(){
         return "hello,world";
    }
 }
 

2.2方法的调用

2.2.1方法调用的静态调用和动态调用

两个类,一个demo2 一个student类,学会用new来调用非静态方法。静态方法就可以直接Student.say();

 public class Demo02 {
     //静态方法 static
     public static void main(String[] args) {
         //想要调用非静态方法,就要先new给她分配一个内存空间
         //也就是先实例化对象类型 对象名 = 对象值;
         Student xiaoming = new Student();
         Student xiaohong = new Student();
         xiaohong.say();
         xiaoming.say();
    }
 
 
 
     //非静态方法
 }
 
 //学生类
 public class Student {
     //非静态方法,没有加static
     //在学生类里面写的方法,想在另外一个里面调用,就不能直接
     public void say(){
         System.out.println("学生说话了");
    }
 }
 

2.2.2 static静态是和类一起加载的

假如在同一类下

  • 静态方法可以直接调用静态方法

  • 动态方法可以直接调用动态方法

  • 动态方法可以直接调用静态方法

  • 只有静态方法不能调用动态方法

 //Demo02  类
 public class Demo03 {
 
     public static void main(String[] args) {
 
    }
 //可以直接静态调用静态
 public static void a(){    b();       }
 public static void b(){           }
 
 //动态可以直接调用动态
 public void c(){    d();       }
 public void d(){           }
 
 //动态可以调用静态
 public   void e(){    f();       }
 public  static void f(){           }
 
 
 //不可以报错
 //public static void w(){     z();     }
 //public   void z(){         }
 
 }

3.java值传递

 //Demo02  类
 public class Demo04 {
 
     public static void main(String[] args) {
          int a = 1;
         System.out.println(a);
         change(a);
         System.out.println(a);
         System.out.println(change(a));
    }
 
     public static int change(int a){
         a=10;
         int b=10;
                 return a;//这里的a换成b也可以
    }
 }
 
 结果:
 1
 1
 10

 

4.类和对象的关系

  • 类是对某一类事物整体定义,但是并不能代表某一个具体事物

  • 张三就是人的具体实例,张三家里的旺财就是狗的一个具体实例

4.1创建对象

  • 不用再每一个类里面加main方法,一个项目应该只存在一个main方法

    • 只有主项目才用main方法

    • 更好的建模

    • 使用new关键字创建对象,创建对象以后会分配空间并且初始化

4.2构造器

构造器也称作构造方法,是在进行创建对象的时候必须要调用的。并且构造器有两个特点

  1. 必须和类的名字相同

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

    4.2.1一个类即使什么都不写,也会存在一个构造器 也就是方法

     public class Person {
         public Person() {
        }
     }//就算里面不写构造器,class文件生成的时候也会生成一个构造器

    4.2.2构造器的作用

4.2.3构造器注意点

  • 构造器两个特点

    • 必须和类的名字相同

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

  • 作用

    • new本质在调用构造器

    • 初始化对象的值

  • 注意点

    • 定义有参数构造器后,必须定义一个空的无参构造

  • alt+insert就会自动生成构造器

 

4.3new创建对象简单内存分析

  1. 首先加载main函数所在类,static数据是和类一起加载的

  2. 然后是进入主函数main()

  3. 之后因为主函数new了一个对象,所以加载了这个类

  4. 然后因为要给这个对象赋值,所以就在堆中开辟了空间,这时候都还是初始值

  5. 然后各个变量开始赋值

4.4类与对象总结***

  • 类是一个模板(抽象总结出来),对象是一个具体实例

  • 方法

    • 定义、调用

  • 对应的引用

    • 引用类型:

    • 基本类型(8)(在day5里面有)

    • 对象是通过引用来操作的:栈--》堆

  • 属性:字段field 成员变量

    • 默认初始化

    • 数值:0 0.0

    • char : u0000

    • boolean:false

    • 引用:null

    赋值 :修饰符 属性类型 属性名 = 属性值

  • 对象的创建于使用

    • 必须使用new关键字创造对象,构造器 Person raoxin = new Person();

    • 对象的属性 raoxin.name

    • 对象的方法 raoixn.sleep()

  • 类里面只能写:

    • 静态的属性 属性

    • 动态的行为 方法

posted @   newlive122  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示