面对对象:
面对对象是JAVA的一个重要特征和思想,下面通过与面对过程来深刻认识一下面对对象。
1.面向过程思想概述:
面向过程的思想去实现一个功能的步骤:
首先要做什么,怎么做,最后我们再代码体现。一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,实现我们的功能。每一个步骤我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。面向过程开发关心的就是每一步的实现,如果每一步都能够实现那么功能就能够实现,中间如果任何一个步骤出现问题,都会导致失败。
面向过程的代表语言:C语言
2.面向对象思想概述:
面向过程的编程思想只能满足简单功能的实现,但在实际开发当中,项目的功能只会越来越多,不会越来越少,需求也是不断地变化的,可随着需求的更改,功能的增多,发现需要面向每一个过程就很麻烦了,并且程序的可维护性也是非常非常差的,能不能把这每一个步骤和功能再进行封装,根据不同的功能,进行不同的封装,功能类似的封装在一起。使用的时候,找到对应的类就可以了。这就是面向对象的思想。 Arrays binarySearch sort toString()
OOA : 面向对象分析 : 分析解决某个事物一共有多少个对象参与
OOD:面向对象设计: 分析对象和对象之前的关系
OOP:面向对象编程
3.面向对象和面向过程区别和共同点:
区别:
面向过程:事物比较简单,可以用线性的思维去解决
面向对象:事物比较复杂,使用简单的线性思维无法解决
相同点:
1.面向过程和面向对象都是解决实际问题的一种思维方式
2.二者相辅相成,并不是对立的。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理
面向对象特征
1.封装(encapsulation) 2.继承(inheritance) 3.多态(polymorphism) 4.抽象(abstract)
类:
与对象的关系:
对象:是具体的事物
类:是对对象的抽象(抽象抽出象的部分)
对象 张三 李四 王五 赵六
抽取上述对象相象的部分:
年龄 姓名 身高 体重 打牌 唱歌 跳舞
Person Teacher
先有具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。
类的定义
【访问权限修饰符】 class 类名 {
属性/ 成员变量/ 字段
行为/ 成员方法
}
类的理解:
1.类是用来描述现实事物的,是Java语言的最基本单位
2.类是抽象的,是由多个对象抽象想象的部分而来
3.类可以理解为一个模板,数属性和行为的集合,可以通过类的模板创建具体的对象
4.Java使用class来描述一个类
5.类的本质用来组织代码(方法归类),封装数据的(理解提高成员变量的安全性)。
对象的理解:
1.对象是客观存在的,万事万物皆是对象
2.对象是在类的基础上创建的
3.对象又称为 实例/引用/变量/对象
如何创建一个对象?
格式: 类名 对象名 = new 类名();
如何访问一个对象?
访问成员
对象.成员变量
对象.成员方法
定义一个类的步骤
1、定义类名
2、编写类的属性
3、编写类的方法
4、创建对象
5、通过对象访问成员
实例:
1、定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试类,进行测试
public class Demo {
public static void main(String[] args) {
Rectangle firstRectangle = new Rectangle(60, 24);
firstRectangle.sum();
firstRectangle.area();
}
}
class Rectangle {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
public void sum() {
System.out.println("周长为" + 2 * (length + width));
}
public void area() {
System.out.println("面积为" + length * width);
}
public double getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
}
2.封装一个学生类,有姓名,有年龄,有性别,
有英语成绩,数学成绩,语文成绩,
封装方法:求总分,平均分,以及打印学生的信息
public class Demo {
public static void main(String[] args) {
student zhangyu = new student(99, 85, 89, "张宇", 23, "男");
zhangyu.totalScore();
zhangyu.everageScore();
zhangyu.printMessage();
}
}
class student{
private String name;
private int age ;
private String sex;
private double englishScore;
private double mathScore;
private double chineseScore;
public student(){
}
public void printMessage() {
System.out.println("姓名:"+name+" "+"年龄"+" "+"性别"+sex);
System.out.println("英语成绩"+englishScore+"语文成绩"+chineseScore+"数学成绩"+mathScore);
}
public student(double englishScore,double mathScore,double chineseScore,String name,int age,String sex){
this.englishScore=englishScore;
this.mathScore=mathScore;
this.chineseScore=chineseScore;
this.name=name;
this.age=age;
this.sex=sex;
}
public void totalScore() {
System.out.println("总成绩为"+(englishScore+mathScore+chineseScore));
}
public void everageScore() {
System.out.println("平均分为"+(englishScore+mathScore+chineseScore)/3.0);
}
public double sum() {
double sum = 0;
sum = englishScore+mathScore+chineseScore;
return sum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public double getEnglishScore() {
return englishScore;
}
public void setEnglishScore(double englishScore) {
this.englishScore = englishScore;
}
public double getMathScore() {
return mathScore;
}
public void setMathScore(double mathScore) {
this.mathScore = mathScore;
}
public double getChineseScore() {
return chineseScore;
}
public void setChineseScore(double chineseScore) {
this.chineseScore = chineseScore;
}
}
package com.songbiao.homework;
3、定义一个“点”(Point)x y set get类用来表示二维空间中的点。要求如下:
A 可以生成具有特定坐标的点对象。
B 提供可以设置坐标的方法。
C 提供可以计算该点距离另一点距离的方法。
public class Demo {
public static void main(String[] args) {
Point p1 = new Point(1, 0);
Point p2 = new Point(6, 0);
System.out.println(p1.getDistance(p2));
}
}
class Point {
private double x;
private double y;
// 获取距离
public double getDistance(Point p) {
return Math.sqrt(Math.pow(x - p.x, 2) + Math.pow(y - p.y, 2));
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public Point() {
}
public Point(double x, double y) {
this.x = x;
this.y = y;
}
}

被折叠的 条评论
为什么被折叠?



