package test;/** * OP:面向對象的簡稱* 類:同一特征的屬性* * 類的定義:具有相同特征和行為的事物的抽象。(不具體化)* 對象(實例對象):具體真實存在的實例。* 類是對象的實例:* * Java中的類主要分為:系統類和自定義類!!!* 例如:String Array(數組) Random(隨機數) Scanner(格式化輸入)等,都是系統類* 面向過程:重點在于如何實現此功能:* 面向對象:重點能實現此功能的對象如何創建!* 面向對象的優勢:在面向對象語言中,系統類會為大家提供許多在內部封裝好的功能方法,我們至于要創建對象,并且使用方法即可,無需追究方法內部的實現過程步驟!!* * * public 可見度(三種)。public是公開的任意訪問的!*但是不符合面向對象語言的封裝特性* 面向對象的三大特性:封裝 繼承 多態* * protected(繼承) 受保護狀態,也是默認狀態!本類及其子類可以訪問,還有和本類同一個package包文件也可以訪問!所以安全系數依然不高!* * private(封裝) 私有的,僅僅本類可以訪問,但是不符合繼承特性!* 所以最常見的就是protected和private根據需求,結合使用!* * * * * * class 是創建類的標識* person 類名,我們要求類名的首字母大寫!!* * * */public class Person {// 類是具體相同特征和行為的事物的抽象!所以!// 創建類的第一步:特征(也叫作屬性)//(受保護)(默認狀態)同包可以訪問、自己、自己的子類
protected String name;public String sex;//只能在本類中才能訪問
private int age;//默認狀態為protected受保護狀態String address;// 創建類的第二步:行為(也叫作方法)/**public 返回值類型 方法名(參數列表){ } * 如果需要返回值 寫對應類型即可!* 如果不需要返回值,直接寫void代表返回值為空!!* 參數列表:參數個數不限,可有可無 按要求定義!!*/public void eat() {System.out.println("吃飯!!");}public void sleep() {System.out.println("睡覺!!");}// 程序只走main函數!}package test;public class Main {public static void main(String[] args) {//Person的用法,同Random類似Person p1 = new Person();//調用方法p1.eat();p1.sleep();//給屬性賦值p1.name = "王二狗子";
// p1.age = 18;p1.sex = "boy";p1.address = "氪星";//取值System.out.println(p1.name + " " + p1.sex);Person p2 = new Person();p2.name = "李易峰";p2.sex = "boy";p2.address = "中國";System.out.println(p2.name + " " + p2.sex + p2.address);System.out.println();}}package com;import test.Person;public class SQ {public static void main(String[] args) {/*Person p1 = new Person();//sex為publicp1.sex = "男";//name為protectedp1.name = "hjianmaju";//protected默認的p1.address = "zasd";//age為privatep1.age = 19;*/}}
package test;
/*屬性如何賦值*/
public class Dog {//創建4個屬性,全部私有化private String type;private String name;private String color;private int age;//stter方法-----賦值方法//this關鍵字,指代調用此方法的對象!!!誰調用this就是誰!/** aType的位置是形參,即形式的參數,沒有具體的值,起占位作用:告訴使用者,此位置需要賦一個XX類型的值* * */public void setType(String aType) {this.type =aType;//將形參接收到的值,賦值給屬性!因為屬性私有無法外部訪問!} public void setName(String aName) {this.name = aName;}public void setColor(String color) {this.color = color;}public void setAge(int age) {this.age = age;}public void dogInfo() {System.out.println(type + " " + name + " " + age + " " + color);}//-------------------------------------------------------//取值方法 getter//String 是方法返回值的類型!//在哪調用此方法,返回值就返回在那個位置public String getName() {return name;}public String gettype() {return type;}public int age() {return age;}public String getColor() {return color;}//在Dog類中定義的方法,僅限于Dog類型的對象來調用!//誰開發誰使用!!!//-------------------------------------------------------------------//構造方法(又叫:初始化賦值方法):---------- 一次性給多個屬性賦值!//系統默認的格式public Dog() { //無參構造}//public 類名 (參數列表)public Dog (String type,String name,String color,int age) { //有參構造this.name = name;this.type = type;this.color = color;this.age = age;}//方法名一致,但是參數列表不一樣!這就是方法的重載
}package test;import java.util.Random;public class Main {public static void main(String[] args) {// Person的用法,同Random類似Person p1 = new Person();// 調用方法p1.eat();p1.sleep();// 給屬性賦值p1.name = "王二狗子";
// p1.age = 18;p1.sex = "boy";p1.address = "氪星";// 取值System.out.println(p1.name + " " + p1.sex);Person p2 = new Person();p2.name = "李易峰";p2.sex = "boy";p2.address = "中國";System.out.println(p2.name + " " + p2.sex + " " +p2.address);System.out.println();
//------------------------------------------------Random r = new Random();//一旦創建對象,就會調用構造方法!Dog dog1 = new Dog("歡歡","金毛","白色",2);//有參構造// dog1.name = "小強";name屬性在Dog類里面已經定義為私有屬性 其他類 不可訪問Dog dog2 = new Dog();//無參構造// 使用setter方法間接賦值//方法的調用!此方法中傳遞的值叫做實參,也就是實際上的真實需要操作的參數值!!//實參會把值傳給形參! 并且是單向傳遞不可逆轉!dog1.setType("哈士奇");dog1.setName("小黃");dog1.setAge(3);dog1.setColor("黑白色兒");dog1.dogInfo();//setXxx方法是賦值操作System.out.println(dog1.getName());//getXxx方法是調用取值}}package test;/** * OP:面向對象的簡稱* 類:同一特征的屬性* * 類的定義:具有相同特征和行為的事物的抽象。(不具體化)* 對象(實例對象):具體真實存在的實例。* 類是對象的實例:* * Java中的類主要分為:系統類和自定義類!!!* 例如:String Array(數組) Random(隨機數) Scanner(格式化輸入)等,都是系統類* 面向過程:重點在于如何實現此功能:* 面向對象:重點能實現此功能的對象如何創建!* 面向對象的優勢:在面向對象語言中,系統類會為大家提供許多在內部封裝好的功能方法,我們至于要創建對象,并且使用方法即可,無需追究方法內部的實現過程步驟!!* * * public 可見度(三種)。public是公開的任意訪問的!*但是不符合面向對象語言的封裝特性* 面向對象的三大特性:封裝 繼承 多態* * protected(繼承) 受保護狀態,也是默認狀態!本類及其子類可以訪問,還有和本類同一個package包文件也可以訪問!所以安全系數依然不高!* * private(封裝) 私有的,僅僅本類可以訪問,但是不符合繼承特性!* 所以最常見的就是protected和private根據需求,結合使用!* * * * * * class 是創建類的標識* person 類名,我們要求類名的首字母大寫!!* * * */public class Person {// 類是具體相同特征和行為的事物的抽象!所以!// 創建類的第一步:特征(也叫作屬性)public String name;
public String sex;
public int age;
public String address;// 創建類的第二步:行為(也叫作方法)/**public 返回值類型 方法名(參數列表){ } * 如果需要返回值 寫對應類型即可!* 如果不需要返回值,直接寫void代表返回值為空!!* 參數列表:參數個數不限,可有可無 按要求定義!!*/public void eat() {System.out.println("吃飯!!");}public void sleep() {System.out.println("睡覺!!");}// 程序只走main函數!}