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
相關文章
相關標籤/搜索