0. オブジェクト指向: OO:
0. OOA (オブジェクト指向分析) OOD (オブジェクト指向設計) OOP (オブジェクト指向プログラミング)
1. ソフトウェア開発手法です
2. 拡張領域: データベースシステム、インタラクティブインターフェース、アプリケーションプラットフォーム、分散システム、人工知能などの分野
3. 現実世界を理解し抽象化する方法であり、コンピュータープログラミング技術が一定の段階まで発展した成果です
1 . クラスとオブジェクトの基本概念
1. クラス: クラスは、類似のプロパティを持つものの属性 (特性) とメソッド (動作) をカプセル化します。クラス)
2. オブジェクト: オブジェクトは、物事のクラス内の特定の個体です
3. クラス - オブジェクト 関係参照 人口 - 個体
4. クラスの構成: 0 個以上のメンバー変数 0メソッド 0 個以上のコンストラクター
use using using out out out out out out out out out out out ' ' ' ' ' 's ' ‐ ‐ ‐ ダウンスルー
‐ : このクラスのインスタンスを構築するために使用されます (コンストラクターについては後で説明します)
5. オブジェクトの生成と使用:
作成後、Java オブジェクトは通常、次の機能を使用できます: オブジェクトのインスタンスにアクセスします。オブジェクトを呼び出す変数とメソッド
新しいキーワードの ' を使用して、' を抜け出して
まで抜け出すto use ‐ to ‐know-way with, クラス変数 | メソッド
6. 一般的なエンティティクラスの例 Dog.java;方法
7. ある人 (Zhang San) が道を歩いていて、犬 (Dahuang) に会いました。その犬 (Dahuang) が男性 (Zhang San) を噛みました。その男性 (Zhang San) が犬 (Dahuang) を殴りました。 )、犬(ダーファン)が逃げてしまいました~!
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. 演習: 車のクラス、車の属性 (ブランド マーク、排気量、色、価格) と方法 (スタート、スピードアップ、通常走行、走行、遭遇ヒット (人)) を記述します。属性 (名前 name、性別 Sex、年齢 Age) を持つ PeOPLE クラス、
メソッド (Drive (car) の運転、パラメータとして CAR クラスのオブジェクトを使用)、メインクラス
1) の
のいずれかを使用します。 Zhang San は道路を猛スピードで走る BMW を運転しました
2) Li Si という名前の人に会いました
3. クラスとオブジェクトの使用の概要
1. 類似した特性 (属性) と動作 (メソッド) ) ある型をクラスにカプセル化します
2. ビジネスニーズに応じて特定のオブジェクトをインスタンス化(新規)します
3. 特定のオブジェクトの特性を取得するために、オブジェクトを初期化して値を代入します 4.ビジネスニーズに応じて 結合されたオブジェクト間の動作 (メソッド)
4. メンバー変数とローカル変数
1. メンバー変数はクラス内で定義され、メソッドの外で定義され、有効範囲はクラス本体全体
2. ローカル変数はメソッド内で定義され、そのスコープはメソッド内にあります
3. ローカル変数とメンバー変数が同じ名前の場合、メンバー変数はローカル変数が配置されているメソッド内に隠されます。このメソッドで非表示のグローバル (メンバー) 変数を使用する必要がある場合は、this キーワードを使用する必要があります
これ: ローカル変数とメンバー変数が同じ名前の場合、コード ブロックでメンバー変数を呼び出すことができますローカル変数の場所
5. メソッドの設計について
1. メソッドの属性
2. メソッドの構成: アクセス修飾子の戻り値 メソッド名 メソッドパラメータのリスト
3オーバーロード: メソッドのオーバーロードとは、クラスが同じ名前を持つ複数のメソッドを持つことができることを意味しますが、これらのメソッドのパラメーターは異なっている必要があります。つまり、パラメーターの数またはパラメーターの型が異なります。
練習問題: 簡単な計算機(2、3、4 の数字の足し算が実現できる)
6. 構築方法(コンストラクター)
1.工法とは何ですか?特徴は何ですか?
2. 工法の役割は何ですか?
3. コンストラクターはいつ呼び出されますか?
例: 7
演習: 8
4. コンストラクターはオーバーロードできますか?
5. その他の指示:
コンストラクターはオブジェクトを作成する重要な方法です。クラスには少なくとも 1 つのコンストラクターが含まれている必要があります
。程序员如果不给一个类加构造器,则系统会默认添加一个没有参数的构造器
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.写一个三个参数的方法,判断给定的三个参数能否构成直角三角形。另一个类里使用。