概述
Java基础复习(五)
面向对象
什么是面向对象?
在现实生活中我们都要面对各种各样的对象:汽车,电脑,手机等等,但是我们使用这些对象的时候,不需要知道或者是不需要了解这些对象
内部是怎样工作的,只需要使用它其中的一个功能或者是作用就可以了,比如说乘坐汽车的时候,只需要使用汽车运输的这
个功能就可以了,而不需要知道汽车内部是怎样工作的。车子的复杂功能完全“封装”在了车子内部,对外只提供运输功能。
什么是面向对象编程呢?
面向对象编程是一种编程思想,采用与人类的思维习惯一致的方式来设计并编写程序。而Java语言是一个完全面向对象编程的语言。
面向对象编程的步骤:
1.首先需要抽象思考问题的领域需要有哪些对象,将具有共同特征的对象归为一类;
2.然后将这一类对象的特点描述出来,描述对象的特点可以使用对象的特征,对象有两大特征:属性和方法;
3.创建类的实例(创建对象),调用对象的属性和方法,保存数据或者通过方法来实现程序的功能。
面向对象三大特征:封装性,继承性,多态性
面向对象三大特征之一: 封装
封装的表现形式:
1) 把一类事物的数据(属性)和行为(方法)编写到一个Java类中,这是一种封装。
2) 类中的方法,本身也是一种封装,将完成一定功能的代码封装到方法体中,实现代码的重用。
方法的使用者不需要关心方法具体的实现,只需要会调用方法即可。
把属性(成员变量)隐藏起来,对外提供访问这些属性的方法
在Java编程中,通常作法是,使用 private 访问修饰符“控制”外部对象,对成员变量的访问权限。然后,给它们(成员变量)提供公开的 (public) 访问的方法。外部“使用者”只能通过 public 的 setter | getter 方法读写属性的值。
public class Employee {
// 属性(成员变量)
private String name;// 姓名属性
private double salary;// 薪水 //私有的访问修饰符修饰的成员变量或者方法,只能内部自己使用
private String id;// 身份证号码
//用于访问属性的方法:setter | getter
//姓名可以对外公开,读取,改写都行,所以提供了getName()方法和setName()方法
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
//员工的薪水,只想让外界修改,不想让外界查看
public void setSalary(double salary) {//在setter方法中,可以通过逻辑判断,防止错误的数据修改
if(salary > 0){
this.salary = salary;
}
}
//身份证号码,只能让外界查看,不能修改
public String getId(){
return this.id;
}
// 方法(行为)
public void show() {
System.out.println("我叫" + name + ",我的薪水是" + salary + ",我的身份证号码为:" + id);
}
}
// 测试员工类,只能访问公开的方法
public class TestEmployee {
public static void main(String[] args) {
// 新建一个员工类型的对象
Employee emp = new Employee();
emp.setName("张三");
emp.setSalary(8000);
emp.show();
}
}
递归方法
概念:一个方法体内调用它自身,被称为方法递归。
方法递归包含了一个隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
// 实例:计算阶乘 : 5*4*3*2*1
// 使用递归算法编写的方法
public static int fact(int num) {
if (num <= 1) {
return 1;
} else {
return num * fact(num - 1);
}
}
// 使用循环编写的方法
public static int fact2(int num) {
int result = 1;
for (; num >= 1; num--) {
result *= num;
}
return result;
}
// 结果完全相同
public static void main(String[] args) {
System.out.println(fact(5));
System.out.println(fact2(5));
}
递归代码要警惕堆栈溢出
我们可以通过在代码中限制递归调用的最大深度的方式来解决这个问题,递归调用超过一定深度(比如 1000)之后,我们就不继续往下再递归了,直接抛出异常。
最后
以上就是单薄仙人掌为你收集整理的Java基础复习(五)面向对象Java基础复习(五)的全部内容,希望文章能够帮你解决Java基础复习(五)面向对象Java基础复习(五)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复