Java基本問題
1、構造器
/** * test -- 構造器 */public class test { public static void main(String[] args) { // 成員變數初始化順序 // a.預設構造器初始化 Person p1 = new Person(); System.out.println(p1.getName() + ":" + p1.getAge()); // b.成員變數顯示初始化 Person p2 = new Person("cc"); System.out.println(p2.getName() + ":" + p2.getAge()); Person p3 = new Person(10); System.out.println(p3.getName() + ":" + p3.getAge()); // c.透過構造器給成員變數初始化 Person p4 = new Person("cc",10); System.out.println(p4.getName() + ":" + p4.getAge()); // d.透過set方法初始化成員變數 Person p5 = new Person(); p5.setName("dd"); p5.setAge(22); System.out.println(p5.getName() + ":" + p5.getAge()); }};class Person { private String name = "aa"; private int age = 1; // 構造器Person(變數) 作用 // 1、構成器用於建立物件 Person() { System.out.println("空參構造器"); } // 2、構造器用於成員變數初始化 // 3、構造器之間可以過載 Person(String n, int a){ this.name = n; this.age = a; System.out.println("含參構造器"); } Person(String n){ this.name = n; System.out.println("name構造器"); } Person(int a){ this.age = a; System.out.println("age構造器"); } /** * @return the name */ public String getName() { return name; }; /** * @param name the name to set */ public void setName(String name) { this.name = name; }; /** * @return the age */ public int getAge() { return age; }; /** * @param age the age to set */ public void setAge(int age) { this.age = age; };};
2、關鍵字this
class person { private long salary; int age; protected String interest; public String name; // this 可以修飾屬性、方法、構造器,this為當前物件或建立的物件, // this() 顯示呼叫當前類過載構造器, // 要求:this() 需要放置構造器中的首行;n個構造器最多使用 n-1 次 this()構造器 public person() { // this 當前正在建立的物件 this.age = 0; this.salary = 0; this.interest = "food"; this.name = "baby"; System.err.println("i am person"); } public person(int age){ // this 當前正在建立的物件 this.age = age; } public person(String name,int age){ // this() 顯示呼叫當前類過載構造器: person(int age) // this() 需要放置構造器中的首行 this(age); this.name = name; } /** * @param salary the salary to set */ public void setSalary(long salary) { // this 當前物件 this.salary = salary; } /** * @return the salary */ public long getSalary() { return salary; } public void eat() { System.out.println("eating..."); } public void sleep() { System.out.println("sleeping..."); }}
3、許可權修飾符
package01
package package01;public class person {// 許可權修飾符大小: public (任何地方) > protected (子類) > 預設 (同一個包)> private (類內部)// class許可權修飾符只有public 預設 public String name; int age; protected int id; private long salary; public person() { // TODO Auto-generated constructor stub this.name = "aa"; this.age = 0; this.id = 110; this.salary = 0; } public person(String name){ this(); this.name = name; } public person(String name,int age){ this(name); this.age = age; } public person(String name,int age,int salary){ this(name, age); this.salary = salary; } public void eat() { System.out.println("person eating ..."); } public void eat(String name) { System.out.println(name +" eating ..."); }}
package01
package package01;public class test02 { public static void main(String[] args) { person p = new person();// 同一個package中可以呼叫public屬性 System.out.println(p.name);// 同一個package中可以呼叫預設屬性 System.out.println(p.age);// 同一個package中可以呼叫protected屬性 System.out.println(p.id);// 同一個package中不可以呼叫private屬性// private屬性只能在本類中呼叫// System.out.println(p.salary); p.eat("p"); }}
package02
package package02;import package01.person;public class test01 { public static void main(String[] args) { person p1 = new person();// 不同package中只能呼叫public屬性 System.out.println(p1.name);// 不同package中不可以呼叫預設屬性// System.out.println(p1.age); // 不同package中子類可以呼叫protected屬性 // System.out.println(p1.id);// 不同package中不可以呼叫private屬性// System.out.println(p1.salary); p1.eat("p1"); }}class liming extends student {// 不同package中子類可以呼叫protected屬性 public liming() { this.id = 422; System.out.println("my id is "+this.id); } public void eat(String name, String food) { System.out.println(name + " eat "+food); }}
4、super關鍵字
package package01;public class student extends person{ protected int id; public student() {// super(args) 宣告在構造器內部首行, 顯示呼叫父類構造器;與this(args)衝突;// 構造器內部super(args)和this(args)不能同時出現;// 在構造器中,如果不顯示呼叫this(args)或者super(args),則預設呼叫父類空參 super();// 建議設計一個類時,提供一個空參構造器// Object類,是所有類的父類; super(); this.id = 11061; super.id = 422326; }// 當子類與父類有同名屬性id時,透過"super.id"顯示呼叫父類宣告的屬性;透過"this.id"呼叫子類的屬性; public void show() { System.out.println("my super id is "+ super.id); System.out.println("my class id is "+ this.id); }}
5、多型性
package package01;public class test3 { public static void main(String[] args) {// 多型性// 子類物件的多型性,父類的引用指向子類物件// 優先呼叫子類重寫的方法;// 要求:1、類的繼承;2、子類對父類的方法的重寫;// 向上轉型 person p1 = new student(); p1.eat();// 程式執行時分為編譯狀態和運動狀態// 對於多型性,// 編譯時,"看左邊",將此引用父類的屬性、方法;// 執行時,"看右邊",將呼叫子類物件的實體// p1.show();// 使用強轉(),向下轉型 student s2 = (student)p1; s2.show(); student s1 = new student(); s1.eat("s1"); test3 test = new test3(); test.eat(new student()); test.eat(new teacher()); } public void eat(person p) { p.eat(); // 多型父類呼叫子類方法 if (p instanceof student) { ((student) p).show(); } if (p instanceof teacher) { ((teacher) p).teach(); } }}
6、單例設計模式
package package02;import org.junit.Test;public class test02 { @Test public void test() { singleton s1 = singleton.getSingleton(); singleton s2 = singleton.getSingleton(); System.out.println(s1.toString()); System.out.println(s2.toString()); }}class singleton {// 餓漢式單例模式// 1、私有化構造器,只能在本類中呼叫 private singleton() { System.out.println("singleton"); }// 2、在類內部建立一個靜態類變數(物件) private static singleton singleton = new singleton();// 3、提供公共方法,透過"類.類變數"的方法呼叫 public static singleton getSingleton() { return singleton; }}class singleton2 {// 懶漢式單例模式,存線上程安全問題 private singleton2() { System.out.println("singleton2"); } private static singleton2 singleton= null ; public static singleton2 getSingleton() { if (singleton == null) { singleton = new singleton2(); } return singleton; }}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2041/viewspace-2815636/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA的一些基本問題(轉)Java
- ASM基本配置問題ASM
- java 問題Java
- java問題排查Java
- JAVA 雞蛋問題Java
- java面試問題Java面試
- java ftpclient問題JavaFTPclient
- java 中文問題Java
- java 反射問題Java反射
- SDWebImage的基本用法及常見問題Web
- Java服務.問題排查.問題復現Java
- java 常見問題Java
- java問題積累Java
- Java專案問題Java
- java轉型問題Java
- JAVA與ABA問題Java
- Java包呼叫問題Java
- 【java】java10安裝問題Java
- JAVA | Java 解決跨域問題Java跨域
- java -- java.lang.NoSuchMethodError的問題JavaError
- 請問一個java nio問題Java
- SpaceVim的基本安裝和常見問題
- **開發環境一些基本問題開發環境
- 吉特倉庫管理系統- 基本問題解答
- 37個 JavaScript 基本面試問題和解答JavaScript面試
- 轉 外企面試--基本涵蓋了所有問題面試
- 基環樹的一些基本問題
- Java基本型別佔用的位元組數(char佔用幾個位元組問題)Java型別
- 利用greys排查java問題Java
- Java相關問題整理Java
- 08.Java反射問題Java反射
- 【Java問題面試總結】Java面試
- JAVA 猴子分桃子問題Java
- Java面試必看二十問題Java面試
- JAVA型別的問題Java型別
- Java 中文 亂碼問題Java
- java新手找工作問題!!!Java
- java sound與socket問題!Java