java oop

一:oop  面向对象:java

刚开始学编程语言的时候,习惯过程编程,就象写shell的时候也是用命令进行堆叠。可是这种若是修改起来比较麻烦,过一阵子,开始用函数式编程。python

可是也不方便,尤为是在功能复杂的时候,写的函数比较多,改起来也比较麻烦,也很差定位。到最终接触到oop即面向对象编程。起初接触oop的时候,感受一脸懵逼状态。感受本身的不会写代码。linux

归其缘由是:以前是函数调用,而oop是经过对象进行调用。在调用以前先初始化类的对象(在python里叫作构造方法,在java里是构造器),而后经过对象来调用类中的方法。shell

java是面向对象的编程语言,一切同类来实现。而python不是。编程

因此在oop是java的基础。一切借对象,如同linux 一切皆文件!!dom

由类构造的对象的过程叫作建立类的对象的过程。编程语言

java中全部的代码的编写都在某个类中。在oop中编程中,没有顶部的概念,在过程化编程中,从main方法开始进行编程,一次编写本身的方法,在类中没有这个所谓的顶部,用户根据项目编写不一样的类型,在main方法中进行实例化对象进行方法的调用。函数式编程

 1 class Student{
 2     String Deatil(String x,String y){
 3         String sex=x;
 4         String name=y;
 5         return sex+' '+name;
 6     }
 7 }
 8 
 9 public class Main {
10 
11     public static void main(String[] args) {
12     // write your code here
13         Student stu=new  Student();
14         String ret=stu.Deatil("男","evil");
15         System.out.println(ret);
16 
17     }
18 }

 

类的特性:封装、继承、非多态。函数

封装:也叫作数据隐藏。oop

从形式上来看:封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。

实例域:对象中的数据称为实例域。

方法:操纵数据的过程叫作方法。

对于特定的类实例(对象),都有特定的实例域值。这些值的集合就是对象的状态。

封装的原则:绝对不能让类中的方法直接访问其余类的实例域!程序仅经过对象方法与对象的数据进行交互。

继承:面向对象的另外一个特性,能够经过扩展一个类来创建另外一个新的类。在java中的类都是源自object。

新扩展的类有继承的类全部方法和属性,新类还能够定义本身的方法和属性。

二 对象

对象的三大特性:

状态--->每一个对象都保存着描述当前特征信息。对象的状态的改变一定是经过方法调用的行为来实现。

标识--->每个对象都有一个惟一的身份。好比:我在京东上下的2次订单,他们的订单号就是不同。

行为-->具备哪些方法调用。

这三个特性都彼此相互影响,当对象的状态发生变化,他可调用的方法也不同,好比订单:处于配送状态!

就不可使用退货或者修改订单地址。反之,若是你的订单对象空的(null)的话,那就没有配送等状态!

三:类之间的关系

1:继承:“is-a”新类B继承A类的方法,又扩展新的方法。

2:依赖:"uses-a" 类之间的 存在调用关系。好比A类的对象调用B类的对象。

3:聚合:"has-a" A类包含B类。

四:预约义类

java 是oop编程,可是并非 全部的类都有面向对象的特征,好比说Math 类,咱们不比初始化对象,能够直接进行调用。

 1 class Student{
 2     double Deatil(){
 3         double re=Math.random();
 4 
 5         return re;
 6     }
 7 }
 8 
 9 public class Main {
10 
11     public static void main(String[] args) {
12         // write your code here
13         Student stu=new  Student();
14         double ret=stu.Deatil();
15         System.out.println(ret);
16 
17     }
18 }

 五:方法的调用

调用类的方法,是经过类的对象来进行调用。经过对象调用类的方法。(静态方法能够用类进行调用)。

初始化类的对象,须要类的构造器初始化,构造器和类的名字同样构造对象须要加关键new。(外部引用数据须要关键new,内部数据(四项八类不须要关键字new))

 1 import java.util.Date;
 2 
 3 class Student{
 4     Date Deatil(){
 5         Date re=new Date();
 6 
 7         return re;
 8     }
 9 }
10 
11 public class Main {
12 
13     public static void main(String[] args) {
14         // write your code here
15         Student stu=new  Student();
16         Date ret=stu.Deatil();
17         System.out.println(ret);
18 
19     }
20 }

 

注意:

      1:对象和对象变量:以下

 1 import java.util.Date;
 2 
 3 class Student{
 4     String Deatil(){
 5         Date re;
 6         re=re.toString();
 7         Date ret=new Date();
 8         return re;
 9     }
10 }

 

如上;咱们定义一个变量Date类型变量re,可是并无初始化。因此在引用Date的方法的时候会报错 。

对象变量和对象是不同,只有对象变量进行初始化以后,对象变量才能引用对象的方法。不然报对象未进行初始化。

  2:对象的变量只是引用对象而已,而不是包含对象!在java中任何对象变量的值,都是对存储在另外一个地方的对象引用,new操做符,只是返回该对象的一个引用值。

 

1  Date ret=new Date();

 

 

 

咱们能够用null表示对象变量没有引用对象。

 六:访问器和更改器

访问器:像一些类中的get方法,只是访问对象的状态信息,并不作对象的状态的更改叫作访问器。

更改器:像一些类中的add、del等方法,更改对象的状态信息的方法叫作更改器。

一般在访问器的方法在前缀加get字样,更改器也是同样。。。

 1 import java.util.GregorianCalendar;
 2 import java.util.Date;
 3 
 4 class Student{
 5     Date Deatil(){
 6         GregorianCalendar re=new  GregorianCalendar();
 7         return re.getTime();
 8 
 9 
10     }
11 }
12 
13 public class Main {
14 
15     public static void main(String[] args) {
16         // write your code here
17         Student stu=new  Student();
18         Date ret=stu.Deatil();
19         System.out.println(ret);
20 
21     }
22 }

 

Date和CregorianCalendar转换

 1 import java.util.GregorianCalendar;
 2 import java.util.Date;
 3 
 4 class Student{
 5     Date Deatil(){
 6         GregorianCalendar re=new  GregorianCalendar();
 7         return re.getTime();
 8 
 9 
10     }
11 }
12 
13 public class Main {
14 
15     public static void main(String[] args) {
16         // write your code here
17         Student stu=new  Student();
18         Date ret=stu.Deatil();
19         Get_Year get_y=new Get_Year();
20         int year=get_y.get_Year(ret);
21         System.out.println(ret);
22         System.out.println(year);
23 
24     }
25 }
26 class  Get_Year{
27     int get_Year(Date X){
28         GregorianCalendar cal=new GregorianCalendar();
29         cal.setTime(X);
30         return cal.get(cal.YEAR);
31     }
32 }

 

注意的是:日历的获取月份的时候,比当前的月份少1.

 1 import java.util.GregorianCalendar;
 2 import java.util.Date;
 3 
 4 class Student{
 5     Date Deatil(){
 6         GregorianCalendar re=new  GregorianCalendar();
 7         return re.getTime();
 8 
 9 
10     }
11 }
12 
13 public class Main {
14 
15     public static void main(String[] args) {
16         // write your code here
17         Student stu=new  Student();
18         Date ret=stu.Deatil();
19         Get_Year get_y=new Get_Year();
20         int year=get_y.get_Year(ret);
21         Get_M get_m=new Get_M();
22         int month=get_m.get_M(ret);
23         System.out.println(ret);
24         System.out.println(year);
25         System.out.println(month);
26 
27     }
28 }
29 class  Get_Year{
30     int get_Year(Date X){
31         GregorianCalendar cal=new GregorianCalendar();
32         cal.setTime(X);
33         return cal.get(cal.YEAR);
34     }
35 }
36 class  Get_M{
37     int get_M(Date X){
38         GregorianCalendar cal=new GregorianCalendar();
39         cal.setTime(X);
40         return cal.get(cal.MONTH);
41     }
42 }

 

 获取当前时间戳:

 1 import java.util.Date;
 2 import java.text.SimpleDateFormat;
 3 public class Main {
 4 
 5     public static void main(String[] args) {
 6         // write your code here
 7         Student stu=new  Student();
 8         Date ret=stu.Deatil();
 9         SimpleDateFormat fomate=new  SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
10         String str=fomate.format(ret);
11         System.out.println(str);
12 
13     }
14 }
15 
16 2017-10-04 00:50:31
相关文章
相关标签/搜索