Java面向对象基本概念及基本概念

Java面向对象基本概念及基本概念




面向对象的思想总结

系统以对象为中心来组织
对象相互间发送消息
相关的属性和行为被统一到对象上
关注的焦点是对象及对象的职责
使得系统构建更容易,易维护,易扩展,易复用
解决问题的方式更接近人的思维方式,使人更容易理解



面向对象基本概念

面向对象基本概念
抽象 abstract
对象 object
类 class



  • 抽象(abstract)
    • 从事物中舍弃个别的非本质特征,抽取共同的本质特征
    • 只考虑与问题域相关的信息,而忽略与问题域不相关的部分
  • 对象(object)
    • 是系统中用来描述客观事物的一个实体。可以是有形的,也可以是无形的(如一个客户,一张银行卡,窗体中的一个按钮等等)
    • 对象是构成世界的一个独立单位
    • 具有自己的静态结构(属性)和动态行为(方法)
    • 每个对象有自己的唯一标识
  • 类(class)
    • 类是一组具有相同属性和行为的对象的抽象,类的作用是用来创建对象,对象是类的一个实例



类和对象的关系

抽象和具体的关系。

每一个类在某一时刻都有零个或更多的实例, 类是生成对象的模板

一个类定义了使用哪些数据来描述属性,每一个对象都有相应的属性值数据,一个类通过一系列方法来定义

行为,这些方法能在每个对象中被激活



面向对象主要特征



面向对象主要特征
封装
encapsulation
继承
inheritance
多态
polymorphism



  • 封装(encapsulation)

    • 所谓封装是把对象的属性和行为结合在一个独立的系统单位内部
    • 尽可能隐蔽对象的内部细节,只向外部提供接口
    • 降低对象间的耦合度
  • 继承(inheritance)

    • 也称泛化,继承性是子类自动共享父类属性和方法的机制,在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入自己若干新的内容
    • 继承简化了人们对事物的认识和描述,有益于软件复用,是提高软件开发效率的重要原因之一
    • 是类之间的一种关系,一般类与特殊类之间的关系
    • 继承关系的语义:“is a kind of”
  • 多态(polymorphism)

    • 指同一个命名可具有不同的语义
    • 在方法中,常指在一般类中定义的属性或方法被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为,对于子类,可用不同的方法替代实现父类的服务的方法



面向对象的内容还有很多,时间有限就不写太多了,下面献上我今天做好的几道跟面向对象有关的题目

题目一

1、定义一个矩形类Rectangle:(知识点:对象的创建和使用)
1.1 定义三个方法:getArea()求面积、getPer()求周长,showAll()分别在控制台输出长、宽、面积、周长。
1.2 有2个属性:长length、宽width
1.3 通过构造方法Rectangle(int width, int length),分别给两个属性赋值
1.4 创建一个Rectangle对象,并输出相关信息

矩形类 Rectangle_T2.java
package homeword;

public class Rectangle_T2 {
	private int length;
	private int width;
	
	public Rectangle_T2(int length,int width) {
		this.width = width;
		this.length = length;
	}
	/**
	 * 求面积
	 * @return
	 */
	
	public int getArea() {
		return length*width;
	}
	/**
	 * 求周长
	 * @return
	 */
	public int getPer() {
		return (length+width)*2;
	}
	
	/**
	 * 在控制台输出长、宽、面积、周长
	 */
	public void showAll() {
		System.out.println("长 : "+length+" 宽: "+width+" 面积: "+this.getArea()+" 周长: "+this.getPer());
		
	}
}

测试类 TestRectangle_T2.java
package homeword;

public class TestRectangle_T2 {
	public static void main(String[] args) {
		Rectangle_T2 rectangle1 = new Rectangle_T2(25, 10);
		Rectangle_T2 rectangle2 = new Rectangle_T2(20, 15);
		rectangle1.showAll();//输出rectangle1所有信息
		System.out.println(rectangle1.getArea()); //输出rectangle1面积
		rectangle2.showAll();//输出rectangle2所有信息
		
	}
}




题目二

2、设计一个类Student,该类包括姓名、学号和成绩。设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息。

下面为了大家调试方便,我干脆在类里进行测试,就不新建一个测试类了。如果有需要可以自己新建一个,把main方法里的代码copy过去就可以进行测试了。



学生类 Student_T4.java
package homeword;

import java.lang.reflect.Array;
import java.util.Arrays;

public class Student_T4 {
	//4、设计一个类Student,该类包括姓名、学号和成绩。设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息。[选做题]
	
	private String name;//姓名
	private int no; //学号
	private int score;//成绩
	static int count=0;
	
	
	static private int [] crArr = new int[999]; //存放成绩数组
	static private int [] noArr = new int[999]; //存放学号数组
	static private String [] nameArr = new String[999]; //存放姓名数组
	
	/**
	 * 构造方法
	 * name 姓名 ,no 学号 ,score 成绩
	 * @param name
	 * @param no
	 * @param score
	 */
	public Student_T4(String name, int no, int score) {
		this.name = name;
		this.no = no;
		this.score = score;
		
		nameArr[count]=this.name; 
		noArr[count]=this.no;
		crArr[count] = this.score;
		count++;
	}
	
	/**
	 * 定义一个排序数组的静态方法
	 */
	public static void sortArr() {
		int temp;
		String tStr;
		for(int i=1;i<count;i++) {
			for(int j=1;j<count-i+1;j++) {
				if(crArr[j-1]<crArr[j]) {
					//对成绩排序
					temp = crArr[j-1];
					crArr[j-1]=crArr[j];
					crArr[j]=temp;
					
					//同步学号
					temp = noArr[j-1];
					noArr[j-1]=noArr[j];
					noArr[j]=temp;
					
					//同步名字
					tStr = nameArr[j-1];
					nameArr[j-1]=nameArr[j];
					nameArr[j]=tStr;
				}
				
			}
		}
		
	}
	/**
	 * 定义一个打印信息的静态方法
	 */
	static public void printAllInfo() {
		for(int i=0;i<count;i++) {
			//根据索引打印对应数组上对应信息存放的位置
			System.out.println("姓名 : "+nameArr[i]+" 学号 : "+noArr[i]+" 成绩: "+crArr[i]);
		}
	}
	
	/**
	 * 显示方法调用了多少次
	 */
	public static void showCount() {
		System.out.println(count);
	}
	
	public static void main(String[] args) {
		Student_T4 student_T41 = new Student_T4("Tony", 32, 35);
		Student_T4 student_T42 = new Student_T4("zhang", 43, 78);
		Student_T4 student_T43 = new Student_T4("bill", 23, 66);
		Student_T4 student_T44 = new Student_T4("Join", 24, 76);
		Student_T4 student_T45 = new Student_T4("king", 25, 98);
		//Student_T4.showCount();
//		System.out.println(student_T43.crArr.length);
		Student_T4.sortArr();
		Student_T4.printAllInfo();
	}
	
	
}


欢迎关注,后面我会坚持不懈地熬夜更新 ~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值