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面向对象的主要内容,如果未能解决你的问题,请参考以下文章