类与对象详解
面向对象
- 面向对象与面向过程的区别
- 面向过程围绕功能实现写代码, 具有比面向对象更高的性能,但代码耦合性高,不易维护,常用于嵌入式开发、操作系统内核、驱动程序等对性能能要求较高的开发
- 面向对象按照现实世界的逻辑写程序,便于维护,具备较低的耦合性,程序拥有更长的生命周期。
类与对象的基本概念
- 类:对具有相同相似属性、行为的的一类事物的抽象信息描述,例如人、猫指的就是一个类
- 对象:具体的事物,例如具体的人(小王同学)就是一个对象。
类: 一类事物的描述
- 语法:关键字 class
- 格式:
/**
* 类名必须首字母大写,遵循驼峰命名法
* 变量、参数、方法名,遵循小驼峰命名法
* public修饰的类必须与所在的文件名一致
*/
public class 类名{
}
类的结构
- 成员:
- 属性:
- 格式 数据类型 属性名;
- 例如:int age; String name;
- 方法:
- 格式 权限修饰符 返回值类型 方法名(参数列表){ //方法体 }
- 返回值:返回的数据,返回到方法的调用式上。
- 无返回值:void 不需要return数据,但是可以通过return来结束方法执行
- 有返回值:数据类型 需要return 数据,必须在方法可能会结束执行的地方
- 参数:参数变量名在方法中是局部变量
- 参数在调用时必须要传入参数值
- 有参数 格式:参数类型 参数变量名(有多个参数时用逗号隔开)
- 无参数 不需要写
- 可以实现重载
- 在一个类中可以有多个同名的方法,方法的参数的数量 类型 顺序不同
- 属性:
- 范例:定义一个Student类
public class Student{
String name;
int id;
//int score;
/**
* 输出学生的姓名和学号
*/
public void display(){
System.out.println("姓名:"+name+",学号:"+id);
}
}
对象 类的一个实例
- 创建对象:
- 关键词:new
- 格式: 类名 对象名 = new 类名();
- 通过对象名来调用属性和方法
- 范例:
public class Student {
String name;
int id;
//int score;
/**
* 输出学生的姓名和学号
*/
public void display(){
System.out.println("姓名:"+name+",学号:"+id);
}
public static void main(String[] args) {
Student stu1 = new Student();
stu1.id = 12345;
stu1.name = "张三";
stu1.display();
}
}
- 运行结果:姓名:张三,学号:12345
对象和对象名
- 我们如何区去区分对象和对象名的概念呢?
- 一句话概括:对象名保存着对象的地址。为了便于理解,我们看下面的问题:
- 当我们执行stu1 = stu2操作时,系统会将stu2的属性的值赋给stu1吗?
- 显然不会,因为stu1和stu2是对象名,保存着各自对象的地址,当发生stu1 = stu2操作时,stu1指向的对象地址赋给了stu2,相当于为stu2起了一个别名stu1。
- 下面用代码进行验证:
public class Student {
String name;
int id;
//int score;
/**
* 输出学生的姓名和学号
*/
public void display(){
System.out.println("姓名:"+name+",学号:"+id);
}
public static void main(String[] args) {
Student stu1 = new Student();
stu1.id = 1;
stu1.name = "张三";
Student stu2 = new Student();
stu2.id = 2;
stu2.name = "李四";
//修改stu2的值,观察stu1是否也会变化;
stu1 = stu2;
stu2.name = "王五";
stu1.display();
}
}
- 输出结果:姓名:王五,学号:2
- 执行stu1 = stu2;操作后,我们修改stu2的值,发现stu1的值也发生了相同的变化,证毕。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13598.html