1.面向對象
Java是面向對象的程序設計語言,除了8中簡單類型外,都屬於對象
面向對象的語言會有明顯的三個特征:封裝、繼承、多態
注意:Java其實不算完全面向對象,因為有8種簡單類型的存在
2.面向對象的語言有哪些
java 、ython、c++
3.面向對象(OO)的優點
1)與人類的思維習慣一致(觀察事物得出結論,用程序的形式寫出)
2)信息隱藏,提高了程序的可維護性和安全性(封裝)
3)提高了程序的可重用性(多態和繼承)
4.什么是類?什么是對象?
貓科動物屬於一個類,獅子老虎屬於對象。
類就是邏輯概念當中,現實當中內存當中並不存在的;對象是會占內存,實實在在用到的東西
類相當於生產汽車的一張圖紙,對象相當於根據圖紙生產出來的車
類和對象是一對多;對象只屬於一個類。
5.類的概念
1.類是對一群具有相同屬性、表現相同行為的對象的抽象
2.類確定對象將會擁有的屬性和行為,它定義了一種對象所擁有的數據和所能完成的操作。
3.在面向對象程序設計中,類是程序的基本單元。程序中的對象是類的實例 。對象是通過類創建的
車的文字描述
靜態特征:車名、車身顏色等
動態特征:能前進、能倒退
對車這個類型的靜態特征描述為類里的屬性,對車類的動作描述,是類里的方法。
類有兩個基本元素:屬性和方法
6.定義類(定義一個類的步驟)
定義類名、編寫類的屬性、編寫類的方法
7.類的創建
成員變量描述靜態特征,放置在類塊中的任何位置,通常書寫在類的開始處。
成員方法描述動態特征,放置在類塊中的任何位置,通常書寫在成員變量之后
public class Car {
/*
* 1-屬性field
* 2-訪問控制符(public)
* 3-類型(String) 名字 首字母小寫 myFirstDog
*
*/
public String color;
public String name;
/*2-方法 method
*public void method(){
*}
**/
public void forward(){
System.out.println("前進"+color);
}
public void backward(){
System.out.println("后退"+name);
}
}
8.對象的創建?
public class CarTest {
public static void main(String[] args) {
// 1-new 一個對象 類 對象
Car aodi=new Car();
// 屬性和方法 filed method
aodi.color="green"; //屬性賦值
aodi.name="A60";
//method
aodi.forward(); //方法調用
aodi.backward();
//打印屬性
System.out.println(aodi.color);
System.out.println(aodi.name);
}
}
練習:創建和使用對象
編寫學員類,輸出學員相關信息
編寫教員類,輸出教員相關信息
public class Student {
//學生實體類
public String name;
public int age;
public String clazz;
public String hobby;
//顯示學員信息
public void info(){
System.out.println("姓名"+name+"年齡"+age+"班級"+clazz+"愛好"+hobby);
}
}
public class Teacher {
//教師實體類
public String name;
public String course;
public String major;
public int teachingAges;
public void info() {
//顯示教員信息
System.out.println("姓名"+name+"課程"+course+"主修"+major+"教齡"+teachingAges);
}
}
public class Test {
測試類
public static void main(String[] args) {
Student xiaoming=new Student();
xiaoming.name="小米";
xiaoming.age=25;
xiaoming.clazz="3年2班";
xiaoming.hobby="LOL";
Teacher xiaohon=new Teacher();
xiaohon.name="小紅";
xiaohon.course="java";
xiaohon.major="軟工";
xiaohon.teachingAges=10;
xiaoming.info();
xiaohon.info();
}
}
9.對象的概念?
根據圖紙生產出來的車。
類是對事物屬性行為的概括描述,對象就是符合類描述的具體事物。
所以一個對象必須屬於某個類,一個類可以有多個具體對象。
10.對象的創建
用關鍵字new來創建對象。new的作用是為對象新開辟一片內存空間
對象的銷毀
(Java垃圾收集機制)當對象不存在引用時,它就會被java自動銷毀。
11.對象的內存分析(棧內存、堆內存)
new一個對象會在堆內存申請一個空間,堆內存的房間號存在棧內存中,棧內存存放的是並不是對象而是對象所在堆內存的房間的地址。
堆內存放的是真是對象的實體,棧內存放的是堆內存的地址
例:int a=10;開劈a的空間
int b=a; 開劈b的空間
b=100; b的值改變,a的值不變
例2:
Student s1=new Student(); 申請空間
S1.name=”1”; 對象名字為1
Student s2=s1; s2在棧內存中申請了空間,把s1的堆內存的地址放了進去
S2=name=”2”;
S1.name? S2.name? 放着的是同一把鑰匙
打印倆個2
12.引用類型變量
引用賦值
例如:我們有Student類
Student s = new Student();
Student s2 = s; //引用賦值
同一類型的倆個引用變量指向了同一個對象
練習:定義管理員類、定義客戶類
定義管理員類
訓練要點
n類的屬性:名字,密碼
n定義類的方法:show() 顯示信息
n需求說明
n編寫管理員類
n實現思路
1. 定義管理員類Administrator
2. 定義其屬性和方法
public class Administrator {
//定義一個類
//類的屬性
public String name;
public String password;
//2-方法 method
public void show(){
System.out.println("管理員"+name+"密碼"+password);
}
}
定義客戶類
需求說明
n 編寫客戶類
n屬性:積分、卡類型
n方法show():顯示客戶信息(顯示積分、卡類型)
定義客戶類Customer
定義屬性和方法
public class Customer {
//類
public int points;
public String type;
public void show() {
System.out.println("顯示積分"+points+"卡類型"+type);
}
}
創建管理員對象
訓練要點
n使用類創建對象
n引用對象的屬性和方法
n需求說明
n創建兩個管理員類對象,輸出他們的相關信息
n實現思路
1、創建兩個管理員類的對象
2、給兩個對象賦值並調用
顯示方法
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//編寫管理員對象
Administrator admin1=new Administrator();
admin1.name="admin";
admin1.password="123456";
Administrator admin2=new Administrator();
admin2.name="admin1";
admin2.password="123456";
admin1.show();
boolean isTrue=true;
}
}
更改管理員密碼
訓練要點
n使用類創建對象
nwhile循環
n需求說明
n輸入舊的用戶名和密碼,如果正確,方有權限更新
n從鍵盤獲取新的密碼,進行更新
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//編寫管理員對象
Administrator admin1=new Administrator();
admin1.name="admin";
admin1.password="123456";
Administrator admin2=new Administrator();
admin2.name="admin1";
admin2.password="123456";
admin1.show();
boolean isTrue=true;
while (isTrue) {
Scanner input=new Scanner(System.in);
System.out.println("請輸入管理員賬號");
String uname=input.next();
System.out.println("請輸入管理員密碼");
String pwd=input.next();
if (uname.equals(admin1.name)&&pwd.equals(admin1.password)) {
System.out.println("新密碼");
String newPwd=input.next();
admin1.password=newPwd;
System.out.println("修改密碼成功");
isTrue=false;
}else{
System.out.println("用戶名或密碼不對,重新輸入");
// isTrue=true;
}
}
}
}
客戶積分回饋
需求說明
n實現積分回饋功能
n金卡客戶積分大於1000分或普卡客戶積分大於5000,獲得回饋積分500分
n創建客戶對象輸出他得到的回饋積分
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Customer c=new Customer();
System.out.println("請輸入卡的類型");
c.type=input.next();
System.out.println("請輸入積分");
c.points=input.nextInt();
if ((c.equals("金卡")&&c.points>1000)||(c.type.equals("普卡")&&c.points>5000)) {
System.out.println("獲得500積分");
}else{
System.out.println("對不起,您的條件不足");
}
}
}
練習:創建和使用對象
一個景區根據游人的年齡收取不同價格的門票。請編寫游人類,根據年齡段決定能夠購買的門票價格並輸出
public class Test3_youren {
public String name;
public int age;
public void info(){
System.out.println("姓名"+name+"年齡"+age);
}
}
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Scanner onput=new Scanner(System.in);
Test3_youren c=new Test3_youren();
Test3_menpiao d=new Test3_menpiao();
System.out.println("請輸入姓名");
c.name=input.next();
System.out.println("請輸入年齡");
c.age=input.nextInt();
if(c.age<18){
c.info();
System.out.println("門票免費");
}else{
c.info();
System.out.println("支付20元門票");
}
}
}