Java面向对象

Posted 优小U

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象相关的知识,希望对你有一定的参考价值。

1. 什么是对象

万物皆对象、客观存在的事物

对象:用来描述客观事物的一个实体,由一组属性和方法构成

在这里插入图片描述

2. 类和对象

  • 类是模子,确定对象将会拥有的特征(属性)和行为(方法)
  • 对象是类的表现
  • 类是对象的类型
  • 对象是特定类型的数据

类的特点:

  • 类是对象的类型
  • 具有相同属性和方法的一组对象的集合

在这里插入图片描述

3. 属性和方法

属性:对象具有的各种静态特征(“有什么”)

方法:对象具有的各种动态行为(“能做什么”)

在这里插入图片描述

4. 类和对象的关系

  • 类是抽象的概念,仅仅是模板
  • 对象是一个你能够看得到、摸得着的具体实体
  • 类是对象的类型
  • 对象是特定类型的数据

具体开发过程中,先定义类再实例化对象:
在这里插入图片描述

5. 创建类并实例化对象

// 定义Cat类
public class Cat{
	// 成员属性:昵称、年龄、体重、品种
	String name; // 默认null
	int month; // 默认0
	double weight; // 默认0.0
	String species;
	
	// 成员方法:跑步、吃东西
	public void run(){
		System.out.println("小猫快跑")
	}
	public void eat(){
		System.out.println("小猫吃鱼")
	}
}

public class CatTest{
	public static void main(String[] args){
		// 实例化对象
		Cat one = new Cat();
		one.run();
		one.eat();
	}
}

6. 单一职责原则

单一职责原则,也称为单一功能原则,英文Single Responsibility Principle 缩写SRP,是面向对象设计中的一个重要原则。一个类,应该有且只有一个引起变化的原因。

在程序设计中,尽量把不同的职责,放在不同的职责中,即把 不同的变化原因,封装到不同的类中。

在这里插入图片描述

7. 对象实例化

实例化对象的过程可以分为两部分:

  • 声明对象 Cat one
  • 实例化对象 new Cat();

实例化后的对象才可以使用。

当声明Cat one时是在栈空间开辟了一个区域,实例化的对象是存储在堆中的:
在这里插入图片描述
基本数据类型的值会直接保存在栈空间,引用类型的在栈中只会保存一个地址,这个地址会指向堆内存保存对象:
在这里插入图片描述
每次new对象会产生新的实例化对象:

Cat one = new Cat();
Cat two = new Cat();

在这里插入图片描述

多个对象可以指向同一块实例化空间,这样修改其中一个对象的属性也会修改另一个对象的属性。

Cat one = new Cat();
Cat two = one;

在这里插入图片描述

对象必须被实例化之后才能使用
对象间的引用传递,实际上传递的是堆内存空间的使用权

8. 构造方法

1、构造方法与类同名且没有返回值
2、构造方法的语句格式
3、只能在对象实例化的时候调用
4、当没有指定构造方法时,系统会自动添加无参的构造方法
5、当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
6、一个类中可以有多个构造方法
在这里插入图片描述

public class Cat{
	String name;
	int month;
	double weight;
	String species;

	public Cat(){}
	public Cat(String name){}
	public Cat(String newName,int newMonth,double newWeight,String newSpecies){
		name = newName;
		month = newMonth;
		weight = newWeight;
		species= newSpecies;
	}
}

9. this关键字

this:当前对象的默认引用

this的使用:

  • 调用成员变量,解决成员属性和局部变量同名冲突
  • 调用成员方法
  • 调用重载的构造方法
public class Cat{
	String name;
	int month;
	double weight;
	String species;

	public Cat(){}
	public Cat(String name){}
	public Cat(String name,int month,double weight,String species){
		this(); // 必须是构造方法第一条语句
		this.name = name;
		this.month = month;
		this.weight = weight;
		this.species= species;
	}
	
	public void run(){
		this.eat();
		System.out.println("run")
	}
	
	public void eat(){
		System.out.println("eat")
	}
}

以上是关于Java面向对象的主要内容,如果未能解决你的问题,请参考以下文章

Java中面向对象的三大特性之封装

JAVA方法的定义

java 为啥要实现 function?

Java 封装

Java 封装

Java 封装