面对对象及类的有关知识

面对对象:

面对对象是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;
	}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值