Java學習-面向對象(中)-創(chuàng)新互聯(lián)

Java學習-面向對象(中) 封裝

高內聚低耦合,信息隱藏,屬性私有
private,set()、get()

創(chuàng)新互聯(lián)專業(yè)IDC數(shù)據服務器托管提供商,專業(yè)提供成都服務器托管,服務器租用,成都服務器托管,成都服務器托管,成都多線服務器托管等服務器托管服務。
public class Student{private int age;
	public int getAge(){return this.age;}
	public void setAge(int age){if(age<120 && age>0){this.age=age;}else{	System.out.println("輸入不合法");
		}
	}
}
public class Demo{public static void main(String[] args){Student s = new Student();
		s.setAge(-10);//輸入不合法
	}
}

封裝作用
1.保護數(shù)據,提升程序安全性
2.隱藏代碼實現(xiàn)細節(jié)
3.統(tǒng)一接口
4.提高系統(tǒng)可維護性

繼承

extends,類之間的關系,除了繼承還有依賴、組合、聚合等

public class Person{public void say(){System.out.println("say something.");}
}
public class Student entends Person{}
public class Demo{public static void main(String[] args){Student s = new Student();
		s.say();//say something.
	}
}

子類擁有父類的全部方法
Object類:在Java中,所有的類都默認繼承Object類
Java只有單繼承,沒有多繼承

super
public class Person{protected String name = "a";
	public Person(){System.out.println("Person無參構造");}
	public void print(){System.out.println(Person);}
}
public class Student entends Person{private String name = "b";
	public Student(){System.out.println("Student無參構造");}
	public void print(){System.out.println(Student);}
	public void test1(String name){System.out.println(name);
		System.out.println(this.name);
		System.out.println(super.name);
	}
	public void test2(){print();this.print();super.print();}
}
public class Demo{public static void main(String[] args){Student s = new Student();//Person無參構造 \n Student無參構造
		s.test1("c");//c \n b \n a
		s.test2();//Student \n Student \n Person
	}
}

super注意:
1.子類使用super調用父類的構造方法,必須在構造方法的第一個
2.super必須只能出現(xiàn)在子類的方法或構造方法中
3.super和this不能同時調用構造方法
super VS this:
代表對象不同:this調用者對象,super父類對象
前提不同:this沒有繼承也可以使用,super只能在繼承條件下才可以使用
構造方法:this調用本類構造,super調用父類構造

重寫

靜態(tài)方法:靜態(tài)方法是類的方法,p調用父類Person的方法,實例化的子類對象向上轉型為父類對象

public class Person{public static void test(){sout("Person.test()");}
}
public class Student extends Person{public static void test(){sout("Student.test()");}
}
public class Demo{public static void main(String[] args){Student s = new Student();
		s.test();//Student.test()
		Person p = new Student();
		p.test();//Person.test()
	}
}

非靜態(tài)方法:非靜態(tài)方法是對象的方法,在子類實例化時重寫了父類的方法

public class Person{public void test(){sout("Person.test()");}
}
public class Student extends Person{public void test(){sout("Student.test()");}
}
public class Demo{public static void main(String[] args){Student s = new Student();
		s.test();//Student.test()
		Person p = new Student();
		p.test();//Student.test()
	}
}

重寫:
1.需要有繼承關系
2.方法名相同
3.參數(shù)列表相同
4.修飾符的范圍可以擴大但不能縮小
5.拋出的異常:范圍可以被縮小但不能擴大
6.快捷鍵:Alt+Insert → override
為什么需要重寫
子類不一定需要父類的功能,或者父類不一定滿足子類的需求

多態(tài)

動態(tài)編譯
對象的實際類型是確定的,但可以指向的引用類型不確定

Person p = new Student();//父類的引用指向子類的類型
Object o = new Student();

子類能都用的方法,要么是自己的,要么是繼承的;父類只能調用自己的方法,不能調用子類獨有的方法

public class Person{public void run(){sout("Person.run()");}
}
public class Student extends Person{public void run(){sout("Student.run()");}
	public void eat(){sout("Student.eat()");}
}
public class Demo{public static void main(String[] args){Student s = new Student();
		s.eat();//Student.eat(),自己的
		s.run();//Student.run(),重寫的
		Person p = new Student();
		p.run();//Student.run(),重寫的
		p.eat();//×,子類獨有的
	}
}

注意:
1.多態(tài)是方法的多態(tài),屬性沒有多態(tài)
2.父類和子類有聯(lián)系,如果沒關系會有類型轉換異常,ClassCastException
3.存在條件:繼承關系、重寫,父類引用指向子類對象

public class Person{public void test(){sout("Person.test()");}}
public class Student extends Person{public void test(){sout("Student.test()");}}
public class Teacher extends Person{public void test(){sout("Teacher .test()");}}
public class Demo{public static void main(String[] args){Person p1 = new Person();
		Person p2 = new Teacher();
		Person p3 = new Student();
		p1.test();//Person.test()
		p2.test();//Teacher.test()
		p3.test();//Student.test()
	}
}

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

名稱欄目:Java學習-面向對象(中)-創(chuàng)新互聯(lián)
分享地址:http://bm7419.com/article38/gegpp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供做網站手機網站建設、微信公眾號、網站建設、全網營銷推廣、網站導航

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司