面向对象
创始人
2024-05-30 04:03:42
0

面向对象

      • 面向对象
        • 一、什么是对象
        • 二、什么是面向对象
        • 三、对象
        • 四、什么是类
        • 五、实例变量
        • 六、实例方法
        • 七、方法重载(overload)
        • 八、构造方法
        • 九、对象的创建过程
        • 十、构造方法重载
        • 十一、this关键字

面向对象

一、什么是对象

万物皆对象。

二、什么是面向对象

面向对象是一种编程思想。

一般情况下是与面向过程对比来说的。

面向过程:

​ 将大象装进冰箱。三步。一般用来解决相对简单的业务问题,代码量较少。

面向对象:

​ 使用相应的思想去解析该问题。

  • 大象:大小
  • 冰箱:容积、入口
  • 执行者:推

面向对象思想一般用来解决大型项目,以及比较复杂业务问题。代码量较多。

三、对象

对象具备一定的特征和行为。

特征:一般使用名词。又称为属性。代表对象有什么。例如:大小、颜色等

行为:一般使用动词。又称为方法。代表对象能做什么。例如:吃、跑等

四、什么是类

类是对象产生的模板。具备有相同的特征和行为的对象,所抽取的共同的特征和行为的模板称为类。

/*** 狗*/
public class Dog {// 属性(特征)String brand; // 品种int age; // 年龄String sex; // 性别String furColor; // 毛色// 方法,行为public void eat() {System.out.println("正在吃...");}public void sleep() {System.out.println("正在睡...");}
}
public class Demo1 {public static void main(String[] args) {// 创建一只狗Dog dog1 = new Dog();dog1.brand = "二哈";dog1.age = 2;dog1.sex = "公";dog1.furColor = "黑白";System.out.println("品种为:" + dog1.brand + ",年龄为:" + dog1.age + ",性别为:" + dog1.sex + ",颜色为:" + dog1.furColor);dog1.eat();dog1.sleep();Dog dog2 = new Dog();dog2.brand = "金毛";dog2.age = 1;dog2.sex = "公";dog2.furColor = "金色";System.out.println("品种为:" + dog2.brand + ",年龄为:" + dog2.age + ",性别为:" + dog2.sex + ",颜色为:" + dog2.furColor);dog2.eat();dog2.sleep();}
}

五、实例变量

对象也叫实例,属性也叫特征、字段(field)、实例变量。

一般变量需要先赋值后使用,实例变量(属性)不需要赋值,可以直接使用,会有默认值。默认值和数组的默认值相同。

public class Demo03 {public static void main(String[] args) {Student s1 = new Student();System.out.println(s1.score); // 打印默认值0}
}
局部变量实例变量
定义位置定义在方法的内部定义在类的内部,方法的外部
默认值没有默认值,先赋值后使用有默认值,与数组相同
使用范围从定义的行到其结构结束本类内部有效
命名冲突局部变量不允许重名不能与实例变量同名,但是可以与局部变量同名。局部变量优先

六、实例方法

实例方法在定义时不能加static。

分为方法声明和方法实现。

方法声明指方法的名称、返回值、参数列表等。

方法的实现即大括号中间的内容。

public class Student {int score;public void printScore() // 方法声明// 方法实现{int score = 5;System.out.println(score);System.out.println(this.score);}
}

七、方法重载(overload)

方法重载是指方法名称相同,参数列表(类型、个数、顺序)不同。与返回值类型、访问修饰符无关。

系统根据参数列表去找到相应的方法进行调用。

public class Person {// 食物public void eat(String s) {}// 药物public void eat(int n) {}public void eat(int n, String m) {}public void eat(String n, int m) {}// 口香糖public void eat(double n) {}
}

八、构造方法

是类中的一个特殊方法,用来创建对象。

特点:

  • 与类名完全相同
  • 没有返回值类型
  • 不能使用点号调用,需要使用new 关键字调用
  • 如果没有在类中定义构造方法,则编译器会自动提供无参构造方法。
public class Cat {String name;public Cat() {System.out.println("被调用");}// 不报错,可以存在,但是不应该如此定义一个普通方法
//	public void Cat() {
//		System.out.println("普通方法");
//	}
}
public class Demo05 {public static void main(String[] args) {Cat cat = new Cat();}
}

九、对象的创建过程

步骤:

  • 分配内存空间
  • 属性的初始值和默认值
  • 构造方法调用
  • 将对象的地址赋值到变量中

十、构造方法重载

可以创建带参数的构造方法,此方法传入的参数,可以使用属性来保存。

注意:如果手动创建的构造方法,那么自带的默认的无参构造方法就没有。

public class Student {String name;int age;public Student(String n) {// 保存传入的参数name = n;}public void introduce() {System.out.println("学生的姓名为:"+name+"学生的年龄为:"+age);}
}public class Demo1 {public static void main(String[] args) {Student s = new Student("张三");s.introduce();}
}

有参构造方法可以减少给属性赋值的代码,强制要求在创建时必须要给属性赋值,才能正确使用。

public class Student {String name;int age;public Student() {}public Student(String n) {// 保存传入的参数name = n;}public Student(String n, int a) {// 保存传入的参数name = n;age = a;}public void introduce() {System.out.println("学生的姓名为:"+name+"学生的年龄为:"+age);}
}

十一、this关键字

当构造方法中,变量名与属性相同时,应该使用this关键字调用属性。

public class Student {String name;int age;public Student(String name, int age) {// 保存传入的参数this.name = name;this.age = age;}public void introduce() {System.out.println("学生的姓名为:"+name+"学生的年龄为:"+age);}
}

this关键字表示当前类的对象。有以下用法:

1、调用当前对象属性(如上代码)

2、调用当前对象的方法。

3、调用其他构造方法

public class Student {String name;int age;String sex;public Student(String name, int age) {// 保存传入的参数this.name = name;this.age = age;}public Student(String name, int age, String sex) {// 调用其他构造方法this(name, age);this.sex = sex;}public void introduce() {System.out.println("学生的姓名为:"+name+"学生的年龄为:"+age);}public void m1() {System.out.println("方法m1被调用,也进行自我介绍");// 调用当前对象的方法,哪个对象调用m1方法,this就指代哪个对象。this.introduce();}
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...