阶段性思想总结
阶段总结:面向对象:1,面向对象是一种符合现实生活中的思想。2,面对对象将复杂的事情简单化。3,面向对象将程序员从执行者变成了指挥者。这三点可以用于理解面对对象,也可以用于面试。相对于面向过程而言的,把大象放进冰箱里。面向过程:1,定义开的方法,定义存放的方法,定义关闭的方法。强调的是这些动作。面向对象:强调的是被操作的事物,先描述冰箱,描述大象。冰箱中定义了开,放,关的行为。只要指挥冰箱做事情,调用它的开方法,在调用放的方法,将大象作为参数存入,在调用关的方法。程序员就从执行者,变成了指挥者。又一示例:窗口操作:面向过程:强调的是移动,关闭等动作。移动窗口,关闭窗口。面向对象:强调是被操作的事物(窗口)窗口移动,窗口关闭。----------------------------用计算机语言其实就是在描述现实生活中的事物。如果通过java语言来完成。先对事物进行描述。其实就是java中的类。类其实通过现实中的事物分析了解其特性后,抽象而来的。根据事物的描述产生实体,指挥实体做事情即可。其实就是通过类建立的对象,并通过对象调用其成员。应该有的思想:写java代码其实是先有思想,并用java代码将你的思想进行了体现。对事物先进行分析,分析了其属性和行为后,通过class以及类中的成员变量和成员函数,将这些属性和行为进行计算机体现。类和对象的关系:类是事物的描述。对象是该事物的实体。-----------------------------class Student{private String name;private int age;private String id;Student(){//super(); 隐式 }Student(String name,int age,String id){this.name = name;this.age = age;this.id = id;}public void setName(String name){this.name = name;}public String getName(){return name;}public String toString(){return "Student info :"+name+","+age+","+id;}}class StudentDemo{public static void main(String[] args){Student s = new Student("lisi",30,"007");System.out.println(s.toString());//Student@234adf}}-------------------------------曾经学习的小思想的应用。计数器:class Count{private int num;Count(){this(0);}Count(int num){this.num = num;}public void setNum(int num){this.num = num;}public int getNum(){return num;}public void add(){add(1);}public void add(int n){num += n;}}class CountDemo{public static void main(String[] args){Count c = new Count();for(int x=1; x<=100; x++){if(x%6==0)c.add();}System.out.println(c);/*int count = 0;for(int x=1; x<=100; x++){if(x%6==0)count++;}System.out.println("count="+count);*/}}练习:画矩形,获取矩形的面积,周长。class Rec{private double length;private double width;Rec(double length,double width){this.length = length;this.width = width;}public void draw(){for(int x=0; x<width; x++){for(int y=0; y<length; y++){System.out.print("*");}System.out.println();}}public double getArea(){return length*width;}public double getZhouChang(){return (length+width)*2;}public String toString(){return "rec:"+length+","+width;}}class Circle{private int radius;public static final double PI = 3.14;Circle(int radius){this.radius = radius;}public double getArea(){return redius*radius*PI;}public double getZhouChang(){return r2*radius*PI;}}class RecDemo{public static void main(String[] args){Rec r = new Rec(6,4);r.draw();}}--------------------------------------------------面向对象特征:1,封装隐藏实现细节,提高安全性。2,继承提高了代码的复用性,让类与类之间产生了关系,而来出现了多态。3,多态增强了程序的扩展性。通过圆形和矩形的共性内容向上抽取图形类。/*abstract class Shape{abstract double getArea();abstract double getZhouChang();}*/interface Shape{abstract double getArea();abstract double getZhouChang();}class Rec implements Shape{//内容同上。}另一个例子:描述学生很简单,有可能以后出现和学生类似的事物,为了增强扩展性。思考学生是否具备其他事物的共性内容呢,比如,通常有学生就有讲师。class AgeExceptione extends RuntimeException{AgeExceptione(String mess){super(mess);}}class Person{private String name;private int age;Person(String name,int age){if(age<=0)throw new AgeException("年龄出了问题");this.name = name;ths.age = age;}public void setName(String name){this.name = name;}public String getName(){return name;}}class Student extends Person{priavte String id;Student(String name,int age,String id){super(name,age);this.id = id;}public void study(){}}N年后:class Teacher extends Person{private String number;Teacher(String name,int age,String number){super(name,age);this.number = number;}public void teach(){}}java支持单继承。java支持多层继承1,子类可以获取最多的功能。2,父类中定义的是继承体系的共性功能。技巧:查阅API的时候,先看该继承体系的父类或者顶层接口。了解体系的基本功能应用。通过直接建立最子类对象即可使用该体系。class Father{String name;void da(Son s){s.pao();}void da(Daughter d){d.cry();}}class Son extends Father{void pao(){System.out.println("son pao");}}class Daughter extends Father{void cry(){System.out.println("dau pao");}}class Family{public static void main(String[] args){Father f = new Father();f.da(new Son());}}--------------------------------------------接口:1,程序的功能扩展。2,对外暴露的规则。3,降低了程序的耦合性。延续了多继承机制,但通过多实现接口的方式来体现。一个类在继承另一个类的同时可以实现多个接口。接口中的成员都是公有的。---------------------------------------------设计模式:1,单例设计模式解决什么问题:保证类的对象唯一性 。class Single{private static final Single s = new Single();private Single(){}public static Single getSingle(){return s;}}2,模板方法设计模式解决问题:提高功能的扩展性。什么时候用模板方法设计模式:当定义功能时,功能中一部分可以确定,一部分不确定的时候。就使用模板方法设计模式。可抽象可不抽象,因为可以有默认的实现。abstract class Template{void template(){code...;method();code...;}abstract void methdo();}示例:abstract class GetTimeTamplate{public final void getTime(){long start = System.currentTimeMillis();code();long end = System.currentTimeMillis();System.out.println(end-start);}abstract void code();}----------------------------------------异常:对程序中出现的不正常情况进行描述。并封装成对象。封装成对象的好处:指挥该对象做事情。自定义异常:继承Exception或者RuntimeExcepion即可。还可以通过构造函数调用super将异常信息向上传递。class NoException extends Exception{NoException(){}NoException(String mess){super(mess);}}异常处理方式:1,try2,throws什么时候使用这两种情况呢?当定义功能时,功能因为传递的参数,而引发问题,将该问题声明出来让调用者知道,这是就是抛throws。最终调用抛出异常的功能方法时,需要try。当覆盖了父类没有抛出异常的方法时,子类的方法出现问题,只能try,不能抛。特殊:try catch finallyfinally:通常都用于关闭资源。final finalize fianlly有什么区别??