Java面向对象编程01

面向过程 & 面向对象

  • 面向过程思想

    • 步骤清晰简单,第一步做什么,第二步做什么.....

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

  • 面向对象思想

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

    • 面向对象适合处理复杂的问题,适合处理需要多人协作的问题!

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

什么是面向对象

  • 面向对象编程(Object-Oriented Programming, OOP)

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

  • 抽象

  • 三大特性:

    • 封装

    • 继承

    • 多态

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

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

回顾方法及加深

  • 方法的定义

    • 修饰符

    • 返回类型

    • break:跳出switch,结束循环

    • return:结束方法,返回一个结果

    • 方法名:注意规范 见名知意

    • 参数列表:(参数类型,参数名)...

    • 异常抛出:疑问

    • 示例:

       package com.oop.demo01;
       ​
       import java.io.IOException;
       ​
       //Demo01 类
       public class Demo01 {
       ​
           //main方法
           public static void main(String[] args) {
       ​
           }
       ​
           /*
           修饰符 返回类型    方法名(...){
               //方法体
               return 返回值;
            }
            */
           //return 结束方法,返回一个结果
           public  String sayHello(){
               return "hello,world";
           }
       ​
           public int max(int a,int b){
              return a>b ? a : b;//三元运算符
           }
       ​
           //数组下标越界异常:Arrayindexoutofbounds
           public void readFile(String file) throws IOException{
       ​
           }
       }

  • 方法的调用:递归

    • 静态方法

    • 非静态方法

       package com.oop.demo01;
       ​
       public class Demo02 {
       ​
           //静态方法  static
       ​
           //非静态方法
           public static void main(String[] args) {
               //实例化这个类 new
               //对象类型  对象名 = 对象值
               Student student = new Student();
               student.say();
           }
       ​
           //static和类一起加载
           public static void a(){
               //b();会报错
           }
       ​
           //类实例化后才存在
           public void b(){
       ​
           }
       }
    • 形参和实参

       package com.oop.demo01;
       ​
       public class Demo03 {
           public static void main(String[] args) {
               //实际参数和形式参数的类型要对应
               int add = new Demo03().add(1, 2);
               System.out.println(add);
           }
       ​
           public static int add(int a , int b) {
               return a+b;
           }
       }
    • 值传递和引用传递 

      package com.oop.demo01;
       ​
       //值传递
       public class Demo04 {
           public static void main(String[] args) {
               int a = 1;
               System.out.println(a);//1
       ​
               Demo04.change(a);
               System.out.println(a);//1
           }
       ​
           //返回值为空
           public static void change(int a){
               a = 10;
           }
       }
       package com.oop.demo01;
       ​
       //引用传递:传递对象,本质还是值传递
       public class Demo05 {
           public static void main(String[] args) {
               Person person = new Person();
               System.out.println(person.name);//null
       ​
               Demo05.change(person);
               System.out.println(person.name);//小明
           }
           public static void change(Person person) {
               //person是一个对象:指向的---> Person person = new Person();这是一个具体的人,可以改变属性!
               person.name = "小明";
           }
       }
       ​
       //定义一个Person类,有一个属性:name
       class Person{
           String name;//null
       }
    • this关键字

类与对象的关系

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

    • 动物、植物、手机、电脑.....

    • Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为

  • 对象是抽象概念的具体实例

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

    • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念.

/*
 1.类与对象
     类是一个模板:抽象,对象是一个具体的实例
 2.方法
     定义、调用!
 3.对象的引用
     引用类型:基本类型(8)
     对象是通过引用来操作的:栈--->堆
 ​
 4.属性:字段Field 成员变量
     默认初始化:
         数字: 0   0.0
         char:   u0000
         boolean: false
         引用:null
 ​
      修饰符  属性类型  属性名 = 属性值
 ​
  5.对象的创建和使用
     -必须使用new 关键字创造对象,构造器 Person person = new Person();
     -对象的属性  person.name
     -对象的方法  person.sleep()
 ​
  6.类:
     静态的属性   属性
     动态的行为   方法
 ​
  封装、继承、多态
  */

创建与初始化对象

  • 使用new关键字创建对象

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

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

    • 1.必须和类的名字相同

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

  • 构造器必须要掌握

 package com.oop.demo02;
 ​
 //java--->class
 public class Person {
 ​
     //一个类即使什么都不写,它也会存在一个方法
     //显示的定义构造器
 ​
     String name;
     
     //无参构造
     //1.使用new关键字,本质是在调用构造器
     //2.用来初始化值
     public Person(){
     }
 ​
     //有参构造:一旦定义了有参构造,无参就必须显示定义
     public Person(String name){
 ​
         this.name = name;
     }
     
     //快捷键:alt + insert 自动生产构造器
 }
 ​
 /*
 public class Application {
 ​
     public static void main(String[] args) {
         Person person = new Person();
         System.out.println(person.name);
     }
 }
 ​
     构造器:
         1.和类名相同
         2.没有返回值
     作用:
         1.new 本质在调用构造方法
         2.初始化对象的值
     注意点:
         1.定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造
  */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值