JAVASE(六)

本文介绍了面向对象编程的基本概念,包括类与对象的关系、方法的定义与调用、对象的创建与初始化,强调了封装、继承和多态的三大特性。通过示例代码解释了如何在Java中实现面向对象编程,包括方法的调用、参数传递以及构造器的使用,并探讨了对象的内存分析。面向对象编程适合处理复杂问题,有助于代码的组织和多人协作。
摘要由CSDN通过智能技术生成

面向对象

一、初识面向对象

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

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

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

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

三大特性:封装;继承;多态

从认识的角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。从代码运行的角度考虑是先有类后有对象。类是对象的模板。

二、方法回顾和加深
方法的定义:

1、修饰符

2、返回类型

package com.oop;

import javax.security.auth.login.CredentialNotFoundException;

//Demo类
public class Demo01 {

    //main 方法
    public static void main(String[] args) {

    }

    /*
    修饰符 返回值类型 方法名(){
         //方法体
         renturn 返回值
    }
     */
    public String sayHello(){
        return "hello,world";
    }
    
    public void hello(){
        return;
    }

    public int max(int a,int b){
        return a>b ? a:b;//三元运算符
    }
}

3、break和return的区别:break跳出switch循环,结束循环。return: 结束方法,返回一个结果

4、方法名:注意规范,首字母小写和驼峰原则。见名知意

5、参数列表:(参数类型,参数名)…

6、异常抛出

方法的调用:

1、静态方法

2、非静态方法

package com.oop;

//学生类
public class Student {
    public static void main(String[] args) {

    }

    //非静态方法
    public void say(){
        System.out.println("学生说话");
    }

    //静态方法
    public static void say2(){
        System.out.println("学生说话2");
    }
}
package com.oop;

public class Demo02 {
    public static void main(String[] args) {

        //非静态方法
        //非静态方法实例化这个类 new
        //对象类型 对象名 = 对象值
        Student student = new Student();
        student.say();


        //静态方法 static
        Student.say2();


        //


    }

}
3、形参和实参
package com.oop;

public class Demo03 {

    public static void main(String[] args) {
        //实际参数与形式参数的类型要对应
        int add = Demo03.add(1, 2);
        System.out.println(add);
    }

    public  static int add(int a,int b){
        return (a+b);
    }
}
4、值传递与引用传递
package com.oop;

//引用传递:对象,本质还是值传递
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);//王

    }

    //person是一个对象:指向的---> Person person = new Person();这是一个具体的人,可以改变属性
    public static void change(Person person){
        person.name = "王";
    }
}


//定义了一个Person类,有一个属性:name
class Person{
    String name;
}

5、this关键字

三、对象的创建分析
1、类与对象的关系

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

2、创建与初始化对象

使用new关键字创建对象。

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

类中的构造器也成为构造方法,是进行对象创建的时候必须要调用的。并且构造器有以下两个特点:必须和类的名字相同;必须没有返回类型,也不能写void。

package com.oop.Demo02;

//学生类
public class Student {

    //属性:字段
    String name;
    int age;

    //方法
    public void study(){
        System.out.println(this.name+"在学习");
    }

}

package com.oop.Demo02;

//一个项目应该只存在一个main方法
public class Application {

    public static void main(String[] args) {

        //类:抽象的,实例化
        //类实例化后会返回一个自己的对象
        //student对象就是一个Student类的具体实例

        Student xm = new Student();
        Student xh = new Student();

        xm.name = "小明";
        xm.age = 3;

        System.out.println(xm.name);
        System.out.println(xm.age);
        xm.study();



    }
}
package com.oop.Demo02;

public class Person {

    //一个类即使什么都不写,也会存在一个方法
    String name;
    int age;

    //1.使用new构造器,本质是在调用构造器
    //2.用来初始化值
    public Person() {
    }

    //有参构造:一旦定义了有参构造,无参就必须显示定义
    //Alt+Insert 生成构造器快捷键
    public Person(String name){
        this.name = name;
    }

    public Person(String name,int age) {
        this.name = name;
        this.age = age;
    }
}

/*
    public static void main(String[] args) {

        //new实例化了一个对象
        Person person = new Person();

        System.out.println(person.name);

    }

    构造器:
    1.和类名相同
    2.没有返回值
    作用:
    1.new 本质是在调用构造方法
    2.初始化对象的值
    注意点:
    定义有参构造之后,如果想使用无参构造,显示地定义一个无参的构造

    Alt + Insert
 */
简单内存分析:
package com.oop.Demo02;

public class Pet {

    public String name;
    public int age;

    //无参构造

    public void shout(){
        System.out.println("叫了一声");
    }
}

package com.oop.Demo02;

//一个项目应该只存在一个main方法
public class Application {

    public static void main(String[] args) {

        Pet dog = new Pet();
        dog.name = "旺财";
        dog.age = 3;
        dog.shout();

        System.out.println(dog.name);
        System.out.println(dog.age);
    }


}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apAzFfTO-1634382366338)(C:\Users\de’l’l\AppData\Roaming\Typora\typora-user-images\image-20211015105144049.png)]

类与对象

1.类是一个模板,是抽象的。对象是一个具体的实例。

2.方法:定义;调用

3.对应的引用:

引用类型:基本类型(8)

对象是通过引用来操作的:从栈到堆

4.属性:

字段Field 成员变量

默认初始化:数字:0 0.0

​ char:u0000

​ boolean:false

​ 引用:null

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

5.对象的创建和使用
  • 必须使用new关键字创建对象,构造器。Person person = new Person();
  • 对象的属性 Wang.name
  • 对象的方法 Wang.sleep()
6.类:

静态的属性 属性

动态的行为 方法

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值