JAVA基礎知識之面向物件
本文章主要簡單講述了類的定義,物件的建立與使用,類的封裝,構造方法,內部類,類的繼承,介面與異常處理等知識。
1,類的定義 && 物件的建立與使用 && 類的封裝
a,類的定義:
class Person{
int age=10; //類中定義的變數叫成員變數
void speak(){ //定義成員方法
int age=60;//方法定義的變數叫區域性變數
System.out.println("大家好,我今年“+age+”歲“);
}
^*^:上述程式碼輸出的是10,而不是60
b,物件的建立與使用:(java程式使用new關鍵字建立物件)
建立: 類名 物件名稱 = new 類名(); 使用: 物件引用.物件成員
example 01(物件的建立與使用)
public class Hello{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Person p1 = new Person(); //建立第一個person物件 Person p2 = new Person(); //建立第二個person物件 p1.age = 18; //為age屬性賦值 p1.speak(); //呼叫物件的方法 p2.speak(); } } class Person{ int age; void speak(){ System.out.println("大家好,我今年"+age+"歲!"); } }
c,類的封裝:
所謂類的封裝是指在一個類中,將類中的屬性私有化,即使用private關鍵字來修飾,私有屬性只能在它所在的類中被訪問。為了能讓外界訪問私有屬性,需要提供一些使用public修飾的方法【獲取屬性值的getxxx()方法和設定屬性值的setxxx()方法】
example 02(類的封裝)
public class Hello{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Student stu = new Student(); stu.setAge(-30); stu.setName("小明"); stu.introduce(); } } class Student{ private String name; //將name私有屬性化 private int age; //將age私有屬性化 public String getName(){ return name; } public void setName(String stuName){ name = stuName; } public int getAge(){ return age; } public void setAge(int stuAge){ if(stuAge <= 0) System.out.println("年齡不合法……"); else age = stuAge; } public void introduce(){ System.out.println("大家好,我叫"+name+",我今年"+age+"歲!"); } }
2,構造方法:
定義:滿足3個條件的方法 a【方法名與類名相同】;
b【在方法名前面沒有返回值型別的宣告】;
c【在方法中不能使用return語句返回一個值】。
example 03(定義無參的構造方法)
public class Hello{
/**
* @param args
*/
public static void main(String[] args) {
Person p = new Person();
}
}
class Person{
public Person(){
System.out.println("無參的構造方法被呼叫了……");
}
}
example 04 (定義有參的構造方法)
public class Hello{
/**
* @param args
*/
public static void main(String[] args) {
Person p = new Person(20);
p.speak();
}
}
class Person{
int age;
public Person(int a){
age = a;
}
public void speak(){
System.out.println("I am "+age+"years old.");
}
}
*^*:構造方法與普通方法一樣支援過載。
3,內部類:(成員內部類 && 靜態內部類 && 方法內部類)
a,成員內部類:在一個類中定義的類,在成員內部類中可以訪問外部類的所有成員。
example 05(成員內部類)
public class Hello{
/**
* @param args
*/
public static void main(String[] args) {
Outer outer = new Outer();
outer.test();
}
}
class Outer{
private int num = 4;//定義類的成員變數
//定義了一個成員方法,方法中訪問內部類
public void test(){
Inner inner = new Inner();
inner.show();
}
//定義了一個成員內部類
class Inner{
void show(){
//訪問外部類的成員變數
System.out.println("num="+num);
}
}
}
b,方法內部類(在成員方法中定義一個類,它只能在當前方法中被使用)
example 06(方法內部類)
public class Hello{
/**
* @param args
*/
public static void main(String[] args) {
Outer outer = new Outer();
outer.test();
}
}
class Outer{
private int num = 4;//定義類的成員變數
public void test(){
//在方法中定義類
class Inner{
void show(){
System.out.println("num="+num);
}
}
Inner inner = new Inner();//建立內部類物件
inner.show();//呼叫內部類方法
}
}
4,類的繼承(【extends關鍵字】子類會自動擁有父類所有可繼承的屬性和方法)
example 07(類的繼承)
public class Hello{
/**
* @param args
*/
public static void main(String[] args) {
Dog dog = new Dog();
dog.name = "哈士奇";
dog.printName();
dog.shot();
}
}
class Animal{
String name;
void shot(){
System.out.println("動物發出叫聲!");
}
}
class Dog extends Animal{
public void printName(){
System.out.println("name="+name);
}
}
注意*^*:1,【一個類只能有一個直接父類】2,【多個類可以繼承一個父類】3,【允許多層繼承】
5,介面 (interface && implement)
example 08(介面)
public class Hello{
/**
* @param args
*/
public static void main(String[] args) {
Dog dog = new Dog() {
};
dog.breathe();
dog.run();
dog.liveOnland();
System.out.println(Animal.ID);
}
}
//定義了Animal介面
interface Animal{
//定義全域性變數
int ID = 1;
//定義3個抽象方法
void breathe();
void run();
void liveOnland();
}
abstract class Dog implements Animal{
public void breathe(){
System.out.println("狗在呼吸!");
}
public void run(){
System.out.println("狗在跑!");
}
public void liveOnland(){
System.out.println("狗生活在陸地上!");
}
}
6,異常處理(try……catch && finally)
example 09(異常處理)
public class Hello{
/**
* @param args
*/
public static void main(String[] args) {
try{
int result = divide(4, 0);
System.out.println(result);
}catch(Exception e){
System.out.println("捕獲的異常資訊為:"+e.getMessage());
return;//用於結束當前語句
}finally{
System.out.println("進入finally程式碼塊!");
}
System.out.println("程式繼續進行下去……");
}
public static int divide(int x,int y){
int result = x/y;
return result;
}
}