java面向对象基础知识

发布于:2023-02-03 ⋅ 阅读:(288) ⋅ 点赞:(0)

1、面向对象开发

两种编程思想:

​ 面向过程:

​ 程序自上而下执行,不牵涉到类和对象的操作。本质是代码自己完成自己的功能

​ 冒泡排序是面向过程的

​ 亲历亲为都是面向过程的

​ 面向对象:

​ 程序是靠对象完成一定的功能

​ Arrays.sort(arr) 是面向对象的

​ 借助于对象来实现功能的

2、面向对象的两个重要概念

类:是一切相似事物的统称。是一个范范的概念。可以用来描述事物的特征和行为

对象:对象是一个具体的实体。在类的基础上孵化出来的

3、声明一个类

语法格式:

public class 类名{
	对于当前类属性的描述;
	对于当前类方法的描述;
}
public class Student{
    /**
     *	属性:name、id 、sex
     *
     *	方法:eat()、sleep()
     */
	String name;
    int id;
    char sex;
    
    public void eat(){
		System.out.println("我喜欢吃西红柿炒鸡蛋");
    }
    public void sleep(){

    	System.out.println("中午不睡,下午崩溃。");
    }  
}

4、对象的创建

一个类声明好以后,不使用它,它一直存在,可以借助对象来调用类的属性和方法

语法格式:

类名 对象名 = new 类名();
public static void main(String[] args){
    //创建一个student对象
	Student student = new Student();
    //用student对象调用Student类中的属性并赋值
    student.name = "小余";
    student.id = 2212004;
    student.sex = '男';
    System.out.println( student.name + student.id + student.sex);
	//用student对象调用Student类中的方法
    student.eat();
    student.sleep();
}

5、创建的实体类和测试类在同一个Java文件中

实体类和测试类写在同一个文件中的时候,实体类不能带public修饰符

public class Demo1 {
    
	public static void main(String[] args){
    //创建一个student对象
	Student student = new Student();
    //用student对象调用Student类中的属性并赋值
    student.name = "小余";
    student.id = 2212004;
    student.sex = '男';
    System.out.println( student.name + student.id + student.sex);
	//用student对象调用Student类中的方法
    student.eat();
    student.sleep();
	}
}
class Student{
    /**
     *	属性:name、id 、sex
     *
     *	方法:eat()、sleep()
     */
	String name;
    int id;
    char sex;
    
    public void eat(){
		System.out.println("我喜欢吃西红柿炒鸡蛋");
    }
    public void sleep(){

    	System.out.println("中午不睡,下午崩溃。");
    }  
}

6、构造方法

构造方法的目的是为了初始化对象的,换句话说, 可以队对象的属性进行赋值

对象创建其实是依据构造方法创建的!!!【重点】

eclipse 创建构造方法的快捷键:alt+shift+s

6.1 无参构造方法

构造方法必须写在实体类中

语法格式:

public 类名(){
	
}

6.2 有参构造方法

语法格式:

public 类名 (参数){
	初始化条件;
}
public class Demo3 {
	public static void main(String[] args) {
        //无参构造方法
		Sheep sheep = new Sheep();
		sheep.id = 1;
		sheep.name = "喜羊羊";
		System.out.print(sheep.name + "唱歌:");
		sheep.sing();
        //有参构造方法调用
        Sheep sheep1 = new Sheep("懒洋洋", 2, '公');
        System.out.print(sheep1.name + sheep1.id + sheep1.sex); 
	}
}

class Sheep {
	String name;
	int id;
	char sex;
    //无参构造方法
    public Sheep(){}
    //有参构造方法
    public Sheep(String name, int id, char sex){
        this.name = name;
        this.id = id;
        this.sex = sex;
}
	public void sing() {
		
		System.out.println("别看我只是一只羊....");
	}
}

7、对象在内存中如何存储

在这里插入图片描述

栈内存:

​ 存的是八大基本数据类型的数据

​ 对象的引用。 =左边

栈内存:

​ 对象的全部数据 =右边

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bZdm4lv0-1659413715407)(D:\LearnNotes\千峰Java学习\我的笔记\image\1.png)]

8、构造代码块【了解】

开发中已经不用了

以后会讲静态代码块。

构造代码块的目的也可以对咱们的对象进行初始化的。功能和构造方法一样的

语法格式:

{
	语句体
}

注意事项:

​ 1.构造代码块必须写在实体类中

​ 2.先执行的是构造代码块,再执行构造方法

package com.qfedu.b_constructor;

class Tiger {
	String name;
	int age;
	
	
	//再声明一个构造方法
	public Tiger () {
		this.name = "haha";
		System.out.println("我是无参构造方法");
	}
	//先写一个构造代码块
		{
			this.name = "嘻嘻";
			System.out.println("我是构造代码块");
		}
}
public class Demo5 {
	public static void main(String[] args) {
		//先执行实体类中构造代码块 然后再执行构造方法
		Tiger tiger = new Tiger();
		System.out.println(tiger.name);
	}

}

9、局部变量和成员变量

9.1局部变量

局部变量就是变量的作用域

package com.qfedu.c_var;

import org.omg.CORBA.PUBLIC_MEMBER;

public class Demo1 {

	public static void main(String[] args) {
		for (int i = 0; i < 5; i++) {
			//上面的i就是for循环的局部变量,出了for循环还能用吗?不能
			//紧紧围绕着一个东西就是那个大括号
			System.out.println(i);
		}
		//System.out.println(i);
		if (3 < 4) {
			int i = 98;
			
		}
	
	}
	public static void test () {
		int i = 20;
		System.out.println(i);
	}
	public static void test1 () {
		//System.out.println(i);
	}
	//总结一下: 一定要看清大括号里面的那个变量只能在大括号里面来使用的
	
}

9.2成员变量

定义在实体类的大括号的后面,又叫属性

String name;

int age;

package com.qfedu.c_var;

class Person {
	//name 和 age都是成员变量
	String name;
	int age;
	//作用域 是作用再整个类中 的,只要在类中都可以使用当前的成员变量
	
	public void eat () {
		double weigt;//局部的变量
		System.out.println(name + age);
	}
}
public class Demo2 {
	public static void main(String[] args) {
		
	}

}

9.3局部变量和成员变量的区别

区别 成员变量 局部变量
定义的位置 类的大括号后面(属性) 定义在方法中
作用 用来描述对象的特征 在方法体中只是用来存储数据
初始化的值 默认值 在使用时必须要赋初值
内存 堆区 栈区
作用域 作用整个类 只能在当前的方法中使用

| ---------- | ---------------------- | -------------------------- |
| 定义的位置 | 类的大括号后面(属性) | 定义在方法中 |
| 作用 | 用来描述对象的特征 | 在方法体中只是用来存储数据 |
| 初始化的值 | 默认值 | 在使用时必须要赋初值 |
| 内存 | 堆区 | 栈区 |
| 作用域 | 作用整个类 | 只能在当前的方法中使用 |

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到