zoukankan      html  css  js  c++  java
  • JAVA的学习日记12

    Java面向过程&面向对象

    • 面向过程思想

    步骤清晰简单,第一步做什么,第二步做什么
    面对过程适合处理一些较为简单的问题

    • 面向对象的思想

    物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
    面向对象适合处理复杂的问题,适合处理需要多人协作的问题

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

    什么是面向对象

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

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

    • 抽象

    • 三大特性:

    封装
    继承
    多态

    • 从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。
    • 从代码运行角度考虑是先有类后有对象。类是对象的模板。
    package com.oop.Demo01;
    
    //Demo01 类
    public class Demo01 {
        //main 方法
        public static void main(String[] args) {
    
    
        }
    
        //回顾
        /*
        方法的定义:
            修饰符 返回值类型 方法名(参数){
                语句块
                返回值
            }
         */
        public String sayHello(){
            return "Hello, World";
        }
    
        public void sayBye(){
            return;//结束语句,没有返回值
        }
    
        public int max(int a, int b){
            return a > b ? a : b;
        }
        /*
        注意break、continue和return的区别:
            break:跳出switch语句,结束循环
            return:结束一个方法,返回一个结果【可能是一个值,也可能为空】
         */
    
        //方法名:符合规范,见名知意【重要的时候不能随便写】
    
        /*
        参数列表:
            参数的类型
            参数名
            参数【定长和不定长(...)】
         */
    
    }
    
    

    回顾一下方法的调用

    静态和非静态方法

    package com.oop.Demo01;
    
    //
    public class Demo02 {
        public static void main(String[] args) {
            //静态方法可以直接调用
            Student.say();
    
            //非静态方法要先实例化这个类 用new方法
            //对象类型 对象名 = 对象值;
            Student student = new Student();
            student.sayHello();
        }
    
        //这样写会报错,原因:
        //static是和Demo02这个类一起加载的,在加载的时候b()还没有被架加载,所以会报错
        public static void a(){
    //        b();
        }
    
        //对象实例化之后才存在,所以一个已经存在的调用一个不存在的会报错
        public void b(){}
    }
    
    package com.oop.Demo01;
    
    public class Student {
        //静态发方法 static
        public static void say(){
            System.out.println("静态类");
        }
    
        //非静态类
        public void sayHello(){
            System.out.println("非静态类");
        }
    }
    
    

    值传递和引用传递

    package com.oop.Demo01;
    
    //值传递
    public class Demo03 {
        public static void main(String[] args) {
            int a = 1;
            System.out.println(a);  //1
    
            Demo03.change(a);
            
            System.out.println(a);  //1
        }
        public static void change(int a){
            a = 10;
        }
    }
    
    
    package com.oop.Demo01;
    
    import com.cdoudou.method.Demo05;
    
    //一个类里面只能有一个public class,但是可以有多个class
    //引用传递:本质还是值传递
    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);    //cdoudou
        }
    
        public static void change(Person person){
            //person是一个对象:指向的是---->Person person = new Person();这是一个具体的人,可以改变属性!
            person.name = "coudou";
        }
    }
    
    //定义了一个person类,有一个属性:name
    class Person{
        String name;
    }
    
    

    this方法:指的就是当前的类

    类和对象的关系

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

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

    • 对象是抽象概念的具体实例
    • 小明就是人的一个具体实例,小明家里的旺财就是狗的一个具体实例
    • 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念

    创建与初始化对象

    • 使用new关键字创建对象
    • 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用
    • 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:

    1.必须和类的名字相同
    2.必须没有返回类型,也不能写void

    • 构造器必须要掌握

    主程序

    package com.oop.demo02;
    
    //一个项目应该只有一个main方法
    public class Application {
        public static void main(String[] args) {
            //类:抽象的,需要实例化
            //类实例化后会返回一个自己的对象
            //student对象就是一个Student类返回的一个具体实例
            Student xiaoming = new Student();
            Student xiaohong = new Student();
    
            System.out.println(xiaoming.name);  //null
            System.out.println(xiaoming.age);   //0
    
            xiaoming.name = "cdoudou";
            xiaoming.age = 18;
    
            System.out.println(xiaoming.name);  //cdoudou
            System.out.println(xiaoming.age);   //18
    
            xiaohong.name = "doudou";
            xiaohong.age = 18;
    
            System.out.println(xiaohong.name);  //doudou
            System.out.println(xiaohong.age);   //18
    
        }
    }
    
    

    Student类

    
    package com.oop.demo02;
    
    public class Student {
        //属性:
        String name;
        int age;
    
    
        //方法:
        public void study(){
            System.out.println(this.name+"在学习");
        }
    
    
    }
    
    
  • 相关阅读:
    C#和Modbus通信工程
    C#中JS和Flash中AS 3.0通信交互
    创建型-建造者模式(Builder)
    结构型-享元模式(Flyweight)
    行为型-模板方法模式(Template Method)
    创建型-原型模式(Prototype)
    行为型-状态模式(State)
    结构型-桥接模式(Bridge)
    行为型-中介者模式(Mediator)
    行为型-备忘录模式(Memento)
  • 原文地址:https://www.cnblogs.com/cdoudou/p/13679876.html
Copyright © 2011-2022 走看看