java基础语法 --- day05 --- 面向对象(一)

本文介绍了Java的面向对象编程基础,包括面向对象的定义、方法回顾、类与对象的创建、内存分析、构造器、this关键字及其应用。面向对象是通过类组织代码,以对象封装数据,适合处理复杂问题。文章详细讲解了构造器的作用、this关键字的使用以及对象的内存分配情况。
摘要由CSDN通过智能技术生成

面向对象编程 OOP

1.面向对象定义

1.以类的方式组织代码,以对象封装数据

2.属性+方法 构成类

3.面向过程:面向过程的思维模式是简单的线性思维,思考问题首先陷入第一步做什么、第二步做什么的细节中,这种思维模式适合处理简单的事情。

4.面向对象:面向对象的思维模式是分类思维模式。思考问题首先会解决问题需要哪些分类,然后对这些分

类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。适合处理复杂的问题,适合处理需要多人协作的问题。

5.对象:具体的事物

类:抽象的,是对对象的抽象

2.方法回顾和加深

1.方法的定义:

  • 修饰符

  • 返回值类型

  • break:跳出switch,结束循环 return:返回一个结果或者结束当前方法。 return后面也可以不带参数,不带参数就是返回空,目的是用于想中断函数执行。

  • 方法名:注意规范

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

  • 异常抛出:

修饰符  返回值类型   方法名(参数类型  参数名){
        //方法体
        return 返回值;
}

方法定义举例:

 //return 返回一个结果
    public String sayHello(){
        return "Hell,World!";
    }
    //return 结束方法
    public void print(){
        return;
    }
    public int max(int a ,int b){
        return a>b?a:b;
    }
    //数组下标越界:Arrayindexoutofbounds
    public void readFile()throws IOException{
    }

2.方法的调用:递归

  • 静态方法 static 调用时候:类名.方法 static和类一起加载

  • 非静态方法 把类实例化 new出来这个类 对象类型 对象名 = 对象值; 实例化之后才存在

    Student student = new Student();
        student.say();      //对象.方法名

    类中方法之间的调用:1.非静态方法之间可直接调用 2.静态方法之间也可直接调用 3.静态方法不能调用非静态

  • 形参和实参 //没听懂 需要重新听 P62

  • 值传递和引用传递

  • this关键字:当前的对象 或者当前的类

3.类与对象的创建

1.类:包含属性,方法 同一个包下

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

类是抽象的,需要实例化。 实例化: new Student();

类实例化后会返回一个自己的对象student1。student student1 = new Student();

student1 对象就是Student类的具体实例化。

类是抽象的,对象是具体的。

java 对象的创建和使用 必须使用 new 关键字创建对象。

Person person= new Person ();

使用对象(引用) . 成员变量来引用对象的成员变量。

person.age 使用对象(引用) . 方法(参数列表)来调用对象的方法。

  1. setAge(23)

  2. 类中就是://静态的数据 //动态的行为

package oop.demo02;
//每个类只能有一个public class,可以有其他的类。
public class Student {
    //属性
    String name;
    int age;
    public void say(){
        System.out.println("学生可以说话");
    }
    public void run(){
        System.out.println("学生可以跑步");
    }
}
****************************************************************
package oop.demo02;
public class Application {//所有类的测试类
    public static void main(String[] args) {
       //类:抽象的,实例化
        //实例化后回返回一个自己的对象! stu对象就是一个Student类的具体实例!
        Student stu = new Student();
       
        stu.age = 10;
        stu.name = "张三";
        System.out.println(stu.age);
        System.out.println(stu.name);
        
    }
}

4.创建对象的内存分析

栈 stack: 1. 每个线程私有,不能实现线程间的共享! 2. 局部变量放置于栈中。 3. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!

堆:new出来的

  1. 放置new出来的对象! 2. 堆是一个不连续的内存空间,分配灵活,速度慢!

引用类型的概念 :

  1. java中,除了基本数据类型之外的其他类型称之为引用类型。

  2. java中的对象是通过引用来操作的。(引用:reference)说白了,引用指的就是对象的地址!

5.构造器

1.构造器:构造方法,进行创建对象时候必须要调用的。Alt + insert 快捷键

2.构造器的特点:

  • 必须和类名字相同。

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

3.一个类什么都不写,它也有一个方法,就是一个构造器。

   public Person() {
    }

4.构造器作用:

  • 使用new 关键字,本质是在调用构造器。

  • 构造器中的代码执行后,给对象中的属性初始化赋值。

5.构造器使用原则

一但定义了有参构造器,无参构造器必须显性定义。

原因:,如果我们手动的编写了一个构造器,那么编译后就不会添加任何构造器了。

6.构造器重载

使用有参构造器,在创建对象时候可以给属性赋值.

public class Student{
 String name;
 public Student(){
   name = "tom";
 }
 public Student(String name){
   this.name = name; //给属性赋值
 }
}
​

7.构造器之间的调用

使用this关键字,在一个构造器中可以调用另一个构造器的代码。

注意:this的这种用法不会产生新的对象,只是调用了构造器中的代码而已.一般情况下只有使用new关键 字才会创建新对象。

6. this关键字

1、this在类中的作用

  1. 区别成员变量和局部变量

  2. 调用类中的其他方法

  3. 调用类中的其他构造器

区别成员变量和局部变量
public class Student{
     String name;
    public void setName(String name){
    //this.name表示类中的属性name
    this.name = name;
    }
}
​
调用类中的其他方法
public class Student{
     String name;
    public void setName(String name){
    this.name = name;
    }
    public void print(){
    //表示调用当前类中的setName方法
    this.setName("tom");
    }
}
// setName("tom")和this.setName("tom")的效果是一样的
调用类中的其他构造器:
    this的这种用法,只能在构造器中使用.普通的方法是不能用的.并且这局调用的代码只能出现在构造器中的第一句
public class Student{
     String name;
  public Student(){
  //调用一个参数的构造器,并且参数的类型是String
  this("tom");//只能在第一句中,不能放后面。
  }
  public Student(String name){
  this.name = name;
  }
}
  1. this关键字在类中的意义

this在类中表示当前类将来创建出的对象.

public class Student1 {
    String name;
    public Student1() {
        System.out.println("this出来的: "+ this);
    }
    public static void main(String[] args) {
        Student1 student = new Student1();
        System.out.println("main方法的:"+student);
    }
}
//打印结果:
    this出来的: oop.demo02.Student1@4554617c
    main方法的:oop.demo02.Student1@4554617c
​

this和student打印的结果是一样的

变量student是从对象的外部执行对象,而this是 在对象的内部执行对象本身.

可以理解this.name代表的是成员变量,this.setName("tom")代表的是调用成员方法,

这俩句代码从本质上讲,和在对象外部使用变量student来调用是一样的,student.name和student.setName("tom")。

this和s打印出来的内存地址是一样的,使用==比较的结果为true。

7.类和对象的回顾

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

2.方法:定义和调用。

3.对象的引用

引用类型:对象是通过引用来操作的,实际是一个地址。存在栈里,真实操作是在堆里。栈--->堆

基本类型:8大基本类型:整型:byte short int long 浮点型:double float 字符:char 布尔:boolean

4.对象属性:字段field 成员变量

默认初始化:

默认初始化:数字:0 0.0 char: u0000 boolean: false 引用 :null

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

5.方法:修饰符 返回值类型 方法名(参数类型 参数名){}

6.对象的创建和使用

  • 必须用new关键字来创造对象,要用到构造器 . Person xue = new Person();

  • 对象的属性 xue.name

  • 对象的方法 xue.sleep()

7.类:

静态的属性

动态的方法

8.Java 的三大特征:

封装、继承、多态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱编程的小美女

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

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

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

打赏作者

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

抵扣说明:

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

余额充值