面向对象

面向对象

  • 面向过程思想

    • 第一步做什么,第二部做什么

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

  • 面向对象思想

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

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

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

  • 属性+方法形成一个类

什么是面向对象

  • 面向对象编程(Object-Oriented Programming,OOP)
  • 面向对象编程的本质是***:以类的方式组织代码,以对象的组织(封装)数据***
  • 抽象
  • 三大特性
    • 封装
    • 继承
    • 多态
  • 认识的角度去考虑是现有对象后有类,对象,是具体的事物,类,是抽象的,是对象的抽象
  • 从代码运行角度考虑是现有类后有对象,类是对象的模板

回顾方法及加深

方法的定义

  • 修饰符

  • 返回类型

  • break(跳出switc语句,continue跳出语句还继续执行)和return(结束方法,返回一个结果)

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

  • 参数列表 (参数类型,参数名) …

  • 异常抛出 ?

    import java.util.Arrays;
    //Dme1 类
    public class Demo1 {
        public static void main(String[] args) {
         //main方法
         int a =   max(1,2);
            System.out.println(a);
        }
        /*修饰符 方法返回类型 方法名(...){
        //方法体
        return 返回值;
        */
        public String sayHello(){
            return "hello world";
        }
        public static int max(int a,int b){
            return a>b? a:b;//三元运算符
        }
    }
    

方法的调用

  • 静态方法

    //类名.方法名
    
    //Dme1 类
    public class Demo1 {
        public static void main(String[] args) {
       Student.say();
        }
    }
    
    public class Student{
        //学生类
        public  static void say(){
            System.out.println("学生说话了");
        }
    }
    
  • 非静态方法

  • public class Student{
        //学生类
        public   void say(){
            System.out.println("学生说话了");
        }
    }
    
    //Dme1 类
    public class Demo1 {
        public static void main(String[] args) {
            //实例化这个类
            //对象类型 对象名 = 对象值
      Student student = new Student();
            student.say();
        }
    }
    
    
    • static不能调用非static方法
  • 形参和实参

    public class Demo2 {
        public  static void main(String[]args){
           int add = Demo2.add(1,2);//实际参数,实际参数和形式参数的类型要一致
                System.out.println(add);
        }
        public static int add(int a,int b){//形式参数
            return a+b;
        }
    }
    
    
  • 值传递和引用传递

    public class Demo2 {
        public  static void main(String[]args){
       int a =1;
       System.out.println(a);//1
            Demo2.change(a);
            System.out.println(a);//1
        }
        public static void change(int a){
            a=10;
        }
    }
    
    
    
    public class Demo3 {
        public static void main(String[] args) {
            Person person = new Person();
            System.out.println(person.name);//null
            Demo3.change(person);
            System.out.println(person.name);//pofen
        }
    
        public static void change(Person person) {
            person.name = "pofen";//person是一个队形指向P二宋person=new person();这是一个具体的人可以改变属性
        }
    }
        //定义了一个person类 有一个属性name
        class Person{
            String name;//null
        }
    
    
  • this关键字

类与对象的关系

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

    • 动物,植物,手机。电脑

    • person类,pet类,car类,这些类都是用来描述/定义某一类的具体事物应该具有的特点和行为

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

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

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


我们可以将这些思想转换为代码


创建于初始化对象

  • 使用new关键字创建对象

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

    • 必须和类的名字相同
    • 必须没有返回类型,也不能写void
  • 构造器必须要掌握

    package Demo2;
    
    import java.util.SplittableRandom;
    
    public class Student{
        //属性,字段
        String name;
        int age ;
        //方法
        public void study(){
            System.out.println(this.name+"在学习");
        }
    }
    
    
    package Demo2;
    
    import java.util.SplittableRandom;
    
    public class Application{
        public static void main(String[] args){
            //类,抽象化,实例化
            //类实例化后会返回一个自己的具体实例
            //student对象就是一个Student类的具体实例
            Student xiaoming = new Student();
            Student xiaohong = new Student();
            xiaoming.name= "小明";
            xiaoming.age =15;
            xiaohong.name= "小红";
            xiaohong.age =14;
            System.out.println(xiaoming.name+" " + xiaoming.age);
            System.out.println(xiaohong.name+" " + xiaohong.age);
    
        }
    }
    
package Demo2;

import java.util.SplittableRandom;

public class Person {
    String name;
//一个类即使什么样也不写,也会存在一个方法
    //显示的定义构造器
    //实例化初始值
    //使用new关键字,本质在调用构造器,
    //构造器一般用来初始化值
    public Person(){
this.name="pofen";
    }
    //有参构造,本质还是调用构造器
     //一旦使用了有参构造,无参就必须显示定义

    public Person(String name) {
        this.name = name;
    }
}
//alt+insetr,生成有参数、无参
/*
    构造器
       1.方法名和类名相同
       2.没有返回值
   作用:
       1.new本质调用构造方法
       2.初始化对象值
  注意点:
       1.定义有参构造后,如果想使用无参构造,显示的定义一个无参构造器
       Alt+insert
       this.一般是参数传进来的值,this指的是对象,不是类

 */
package Demo2;

import java.util.SplittableRandom;

public class Application{
    public static void main(String[] args){
    //new实例化了一个对象
        Person person = new Person();
        System.out.println(person.name);
    }
}

简单小结类与对象

  1. 类与对象

    • 类是一个模板,抽象,对象是一个具体实例
  2. 方法

    • 定义调用
  3. 对应的引用

    • 引用类型:对象是通过引用来操作的,指向对象的地址,实际是栈指向堆
    • 八大基本类型
  4. 属性:字段field 成员变量

    默认初始化

    数组 0 0.0

    char u0000

    boolean false

    引用 null

  5. 方法;

    对象的创建和使用

    • 必须使用new关键字创建对象,必须有构造器 Person pofen = newPerson()
    • 对象的属性 pofen.name
    • 对象的方法 pofen.sleep()
  6. 静态的属性 属性

    动态的行为 方法

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pofenx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值