面向对象的思想 一、什么是对象?什么是面向对象?对象是事物在问题领域的抽象。面向对象是以对象为中心用人类的思维方式来认识和思考问题二、面向对象的特征?1、封装将对象
一、什么是对象?什么是面向对象?
对象是事物在问题领域的抽象。
面向对象是以对象为中心用人类的思维方式来认识和思考问题
二、面向对象的特征?
1、封装
将对象的属性和行为特征包装到一个程序单元(即类)中,把实现细节隐藏起来,通过公用的方法来展现类对外提供的功能,提高了类的内聚性,降低了对象之间的耦合性
2、继承
对原有类的拓展,
举例说明:
我现在有一个Person类,但是我想要一个学生对象,他拥有Person类的所有属性和方法,此外他还有学号属性,及上课、写作业等一些方法,
我可以创建一个Student类,但是我不想重复写Person类中已经有了的属性和方法,那么,此时我就可以用Student类继承Person类,Student类就拥有了Person类里的属性和方法了,我只需要在Student类里添加另外的新的属性和方法就可以了。
Person类就成为父类,Student类就称为子类。父类和子类之间是一般和特殊的关系,子类是一种特殊的父类。此外,子类还可以通过重写来改变父类中的方法,重写可以改变方法的返回类型和访问权限,不能改变方法名称。
3、多态
多态是建立在继承的基础上的,是指子类类型的对象可以赋值给父类类型的引用变量,但运行时仍表现子类的行为特征。也就是说,同一种类型的对象执行同一个方法时可以表现出不同的行为特征。
三、面向对象编程的好处?
1、易维护
面向对象编程可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低
Demo.java
package org.jxnd.com;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Demo {
static File file=new File("F:\\aaa.txt");
//方向大于方法
public static void main(String[] args) {
getSystemFiles();
System.out.println("over");
}
public static void BufferedInputStreamTest(){
try {
BufferedInputStream input=new BufferedInputStream(new FileInputStream(file));
byte[] b=new byte[(int) file.length()];
input.read(b);
input.close();
System.out.println(new String(b));
} catch (Exception e) {
e.printStackTrace();
}
}
public static void BufferedOutputStreamTest(){
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
BufferedOutputStream output=new BufferedOutputStream(fos);
output.write("今晚打老虎,人约黄昏后".getBytes());
output.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//文件字节流读
public static void fileInputStream(){
File file=new File("F:\\aaa.txt");
try {
InputStream input=new FileInputStream(file);
System.out.println(file.length());
byte[] b=new byte[(int) file.length()];
input.read(b);
input.close();
System.out.println(new String(b));
} catch (Exception e) {
e.printStackTrace();
}
}
//文件字节流写
public static void fileOutputStreamTest(){
try {
OutputStream output=new FileOutputStream("F:\\aaa.txt");
String msg="大神为何裸死塔下?数百头小兵为何超神?打野的BUFF为何屡遭黑手?Adc的人头为何频频失窃?连环内鬼送死案,究竟是何人所为?野怪为何频频杀人?不断超鬼的背后又隐藏着什";
output.write(msg.getBytes());
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void getSystemFiles(){
File filess=new File("E:\\");
getFileList(filess);
System.out.println("over");
}
//递归读取文件和文件夹
public static void getFileList(File files){
try {
for (File file : files.listFiles()) {
if (file.isDirectory()) {
System.out.println("文件夹:" + file.getName());
getFileList(file);
} else
System.out.println("文件:" + file.getName());
}
} catch (Exception e) {
System.out.println("当前文件不可读取");
}
}
}
