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
- Java服務.問題排查.問題復現Java
- java問題積累Java
- JAVA 雞蛋問題Java
- Java專案問題Java
- java 常見問題Java
- 【java】java10安裝問題Java
- JAVA | Java 解決跨域問題Java跨域
- 基環樹的一些基本問題
- **開發環境一些基本問題開發環境
- JAVA 猴子分桃子問題Java
- Java相關問題整理Java
- 08.Java反射問題Java反射
- 利用greys排查java問題Java
- JAVA程式設計題-用java解決兔子問題Java程式設計
- 碼教授問你一些不確定性的基本問題
- Android多程式通訊之幾個基本問題Android
- Android 多程式通訊之幾個基本問題Android
- 37個 JavaScript 基本面試問題和解答JavaScript面試
- 資料鏈路層的三個基本問題
- Java中的"+"運算問題Java
- Java之併發三問題Java
- 學java就兩個問題Java
- Java解決跨域問題Java跨域
- Java 常見問題彙總Java
- JAVA系列:HashMap常見問題JavaHashMap
- Java 字串比較、拼接問題Java字串
- 10.Java異常問題Java
- 01.Java基礎問題Java
- java鎖的問題速通Java
- JAVA——水仙花數問題Java
- 【Java問題面試總結】Java面試
- 通用人工智慧的四大基本問題人工智慧
- 必知的git基本命令及常見問題Git
- JAVA訪問雲資料mysql出現問題JavaMySql
- 基本操作題
- 10元買啤酒問題Java解法Java
- Java操作hdfs出現的問題Java