搜尋

Java04

Oct 10, 2016 am 09:00 AM

0.物件導向(Object 物件:OO):

    0、OOA(物件導向分析) OOD(物件導向的設計) OOP(物件導向程式設計)

    1、是軟體開發方法

 :資料庫系統、互動式介面、應用平台、分散式系統、人工智慧等領域

    3、是一種對現實世界的理解與抽象的方法,是電腦程式設計技術發展到一定階段的產物

 

1.類別與物件的基本概念

    1.類別:類別是對具有相似性質的一類事物的抽象,類別封裝了相似性質事物的屬性(特徵)和方法(行為)   (即類別的成員)

    2.對象:對象為一類事物中特定的個體

    3.類-對象    關係參考     族群-個體

 

   族群-個體

 

   族群方法  零個或多個建構器

        成員變數:定義該類別或該類別的實例所包含的狀態資料

        方法:用來定義該類別或該類別的實例的行為特性:用於建構此類的實例(關於構造器後面會著重講解)

    5.物件的產生與使用:

        創建創建後就可以使用了,Java的物件大致有如下作用:存取物件的實例變數與呼叫物件的方法

        建立物件的根本途徑是建構器,透過new關鍵字來呼叫某個類別的建構子即可以建立這個類別的實例(物件)

        物件名稱.實例變數|

        物件名稱.實例變數|類別名稱.類別變數|方法

    6.一般實體類別範例  Dog.java ; 物件的宣告與建立; 程式入口類別(主類別),具有main方法的類別

 

   7.一個人(張三)在街上散步,遇到一隻狗(大黃),狗(大黃)咬了人(張三),人(張三)打了狗(大黃),狗(大黃)跑了~!

package Chapter7_2;
//Dog类的申明
public class Dog {
          String name;
          public void beatPersion(People p){
                   System.out.println(name+"咬了"+p.name);
          }
          public void dogRun(){
                   System.out.println(name+"跑了......");
          }
}
 
 
 
package Chapter7_2;
//People类的申明
public class People {
          String name;
          public void walk(){
                   System.out.println(name+"街上散步");
          }
          public void meetDog(Dog dog){
                   System.out.println(name+"遇到"+dog.name);
          }
          public void beatDog(Dog dog){
                   System.out.println(name+"打了"+dog.name);
          }
}
 
 
package Chapter7_2;
//主类
public class DogAndPeople {
 
          public static void main(String[] args) {
                   People peo=new People();
                   Dog dog =new Dog();
                   peo.name="张三";
                   dog.name="大黄";
                   peo.walk();
                   peo.meetDog(dog);
                   dog.beatPersion(peo);
                   peo.beatDog(dog);
                   dog.dogRun();
          }
 
}

2.練習:卡類,描述汽車的屬性(品牌mark、排氣量power、顏色color、價格price)

    和方法(啟動start、加速speedup、正常行駛run,碰到hit(人))

         寫一個People類,有屬性(姓名name、性別sex、年齡age)、

         方法(駕駛drive(car),    1)讓一個人張三駕駛一輛寶馬車在街上飛奔

        2)碰到了一個叫做李四的人

package Chapter7_3;
//定义Car类
public class Car {
          String mark;
          int power;
          String color;
          int price;
 
          public void start(People p) {
                   System.out.println(p.name + "启动了"+mark);
          }
          public void speedUp(){
                   System.out.println(mark+"加速");
          }
          public void run(){
                   System.out.println(mark+"正常行驶");
          }
          public void hit(People p){
                   System.out.println(mark+"撞了"+p.name);
          }
}
package Chapter7_3;
//People类申明
public class People {
          String name ;
          char sex;
          short age;
          public void dirve(Car car){
                   System.out.println(name+"驾驶"+car.mark);
          }
 
}

package Chapter7_3;
//主类
public class CarAndPerple {
public static void main(String[] args) {
          Car car=new Car();
          People p1=new People();
          People p2=new People();
          car.color="black";
          car.mark="宝马";
          car.power=123;
          car.price=123143;
          p1.age=20;
          p1.name="张三";
          p1.sex='m';
          p2.age=21;
          p2.name="李四";
          p2.sex='m';
          car.start(p1);
          car.speedUp();
          p1.dirve(car);
          car.run();
          car.hit(p2);
}
}

3.類和對象的使用總結

    1.抽象具有相似特徵(屬性)和行為(方法)的一類事物封裝到類別裡

    2.根據業務需求實例化(new)出特定的物件

    3.將物件初始化賦值,以便得到特定物件的特性

    4.根據業務需要組合物件之間的行為(方法)   

 

 

4.成員變數與局部變數

    1.成員變數定義在類別中,而方法的外部;又稱為全域變數,有效作用是全域類別是整個類別

    2.局部變數定義在方法裡面,作用域是方法內部

    3.當局部變數和成員變數名字相同的時候,成員變數在該局部變數所在的方法中被隱藏。如果需要在這個方法裡使用被隱藏的全域(成員)變量,則需要使用this關鍵字

        this:如果局部變數和成員變數同名,則可在局部變數所在的程式碼區塊中呼叫成員變數

  

5.關於方法的設計

    1.方法的所屬性

    2.方法的組成  :存取修飾符  返回值  方法名稱  方法參數

 多個方法具有相同的名字,但這些方法的參數必須不同,即或參數的個數不同,或參數的類型不同。           

    練習:簡易計算器(可實現兩個、三個、四個數字的加)

 

 是構造方法?有何特色?

    2.構造方法的作用?

    3.建構方法何時被呼叫?

    例:7

    練習:8

 

    4.構造方法可以重載嗎?

    5.其他說明:

        建構器是創造物件的重要路徑,其中一個類別中至少要包含一個建構器

        程序员如果不给一个类加构造器,则系统会默认添加一个没有参数的构造器

 

 

7.示例:建立一个学生类,有学号、姓名、年龄、性别属性,有描述个人信息的方法,通过键盘输入获取两个学生的信息,并且打印出描述信息

8.构建一个员工信息类(Employee),有员工编号、员工姓名、性别、年龄、工龄、工资等属性,有工作和休息的方法,还有打印自身信息的方法;

     在入口类中通过键盘输入,获取两个员工的对象,要求通过带参数的构造方法来进行成员变量的初始化。然后根据输入星期几,来输出员工当前的状态(周一至周五工作、周六和周日休息)

package Chapter8_2;
//所有类与方法在同一个文件中
import java.util.Scanner;
 
public class Staff {
          int number;
          String name;
          char sex;
          short age;
          short w_age;
          long mon;
 
          public Staff(String name, int number, char sex, short age, short w_age,
                             long mon) {
 
                   this.name = name;
                   this.number = number;
                   this.sex = sex;
                   this.age = age;
                   this.w_age = w_age;
                   this.mon = mon;
 
          }
 
          public void rest() {
                   System.out.println(name + "今天休息");
          }
 
          public void work() {
                   System.out.println(name + "今天工作");
          }
 
          public void printSelf() {
                   System.out.println(name + "\t" +number+"\t" +sex + "\t" + age + "\t" + w_age + "\t"
                                      + mon + "\t");
          }
 
          public static void main(String[] args) {
                   Scanner scan = new Scanner(System.in);
                   System.out.println("请输入第一个员工的信息:姓名,工号,性别,年龄,工龄,工资");
                   String name = scan.next();
                   int number = scan.nextInt();
                   char sex = scan.next().charAt(0);
                   short age = scan.nextShort();
                   short w_age = scan.nextShort();
                   long mon = scan.nextLong();
                   Staff sta = new Staff(name, number, sex, age, w_age, mon);
                   System.out.println("今天星期几");
                   short day = scan.nextShort();
                   if (day < 6) {
                             sta.work();
                   } else if (day >= 6 && day <= 7) {
                             sta.rest();
                   } else {
                             System.out.println("error!");
                   }
                   System.out.println("员工信息如下");
                   System.out.println("姓名"+"\t"+"工号"+"\t"+"性别"+"\t"+"年龄"+"\t"+"工龄"+"\t"+"工资");
                   sta.printSelf();
          }
 
}

9.变量、方法的分类:

 

    内存的分配:栈内存  堆内存

    创建对象时,通过new关键字调用构造函数,返回当前类的对象:People p=new People();

    对象里有成员变量,会在堆内存中开辟连续的空间存储成员变量。

    p是People类型的引用,p存储在栈内存中,它指向堆内存中的对象

 

    这种引用就是C语言中的指针,只是Java语言把这个指针封装了起来

 

    变量:成员变量   局部变量

        成员变量:类变量(有static关键字修饰) 和 实例变量(没有static关键字修饰)

        局部变量:形参、方法内的变量、代码块的变量

 

    方法:类方法(有static关键字修饰)、实例方法(没有static关键字修饰)

 

    java中类的生命周期:加载(Loading)-->验证(Verification)-->准备(Preparation)-->解析(Resolution)-->

                初始化(Initialization)-->使用(Using)-->卸载(Unloadling)

 

    1、类变量和实例变量的区别:类变量共享 ,类变量在类加载时分配入内存;实例变量每个对象独有 ,实例变量在类初始化的时候分配内存。

    2、类方法和实例方法的区别:类方法在类加载时分配入口地址;实例方法在类初始化时分配入口地址 (创建第一个对象时)

 

    3、访问和调用规则:

        1、实例方法既能能访问实例变量又能访问类变量

        2、类方法只能访问类变量

        3、实例方法能调用类方法,但是类方法只能调用类方法

 

10.对象默认初始化

 

11.总结

    1.类的概念、对象的概念;通过群体和个体的概念理解类和对象的关系

    2.类的成员包括—— 属性、方法 (有啥,能干啥)

    3.方法的设计

        a.方法名首字母小写;望文生义;多个单词组成的方法名首字母小写,第二个单词开始首字母大写

        b.返回类型

        c.方法的重载(参数的不同,要么参数个数不同,要么参数类型不同)

    4.成员变量和局部变量的区别;this关键字的作用(this相当于对象自身的意思)

    5.关于构造方法

        a.每一个类都有构造方法,不写不代表没有(默认无参的构造方法)

        b.构造函数与new关键字息息相关,直接决定了对象的构成方式

        c.带参数构造方法的常用方式(给成员变量进行赋值)

    6.实例变量和类变量、实例方法和类方法;关键字static

13.作业

    1.比较大小:写一个有两个int型的参数的方法,要求方法能够比较这两个参数的大小,并且返回比较大的一个,在另外一个类里使用这个方法。

 

    2.判断 :在一个类里有一个方法,能判断给定的参数是否为偶数,如果是偶数返回true,否则返回false。在另一个类里调用该方法。

 

    3.写一个方法,有三个参数,分别为三个线段的长度,判断三条线段是否能组成一个三角形,如果能返回true,否则返回false。在另一个类中使用

 

    4.写一个三个参数的方法,判断给定的三个参数能否构成直角三角形。另一个类里使用。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具