文章目录
1.泛型容器
ArrayList<String> notes=new ArrayList<String>;
容器类(用来存放对象)有两个类型:容器的类型,元素的类型
2.ArryList的操作
ArryList是系统类库中的一个类
package notebook;
import java.util.ArrayList;
public class NoteBook {
private ArrayList<String> notes=new ArrayList<String>();
public void add(String s)
{
notes.add(s);
}
public int getSize()
{
return notes.size();
}
public String getNote(int index)
{
return notes.get(index);
}
public void removeNote(int index)
{
return notes.remove(index);
}
public String[] list()
{
String[] a=new String[notes.size()];
for(int i=0;i<notes.size();i++) {
a[i]=notes.get(i);
}
return a;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
NoteBook nb=new NoteBook();
nb.add("first");
nb.add("second");
System.out.println(nb.getSize());
System.out.println(nb.getNote(0));
}
}
3.对象数组
对象数组中的每个元素都是对象的管理者而非对象本身。
在声明对象数组后,必须对每一个数组成员进行实例化才能正常使用,否则报空指针异常
4.Hash
容器中存放的是对象而不能是int等一些基础的数据类型
package coin;
import java.util.HashMap;
import java.util.Scanner;
public class Coin {
private HashMap<Integer,String> coinnames=new HashMap<Integer,String>();
public Coin() {
coinnames.put(1, "penny");
coinnames.put(10, "dime");
coinnames.put(1, "quarter");
coinnames.put(1, "half-dollar");
}
public String getName(int amount) {
return coinnames.get(amount);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int amount=in.nextInt();
Coin coin=new Coin();
String name=coin.getName(amount);
System.out.println(name);
}
}
5.媒体资料库的设计
Database.java:
package dome;
import java.util.ArrayList;
public class Database {
private ArrayList<CD> listCD=new ArrayList<CD>();
private ArrayList<DVD> listDVD=new ArrayList<DVD>();
public void add(CD cd) {
listCD.add(cd);
}
public void add(DVD dvd) {
listDVD.add(dvd);
}
public void list() {
for(CD cd:listCD) {
cd.print();
}
for(DVD dvd:listDVD) {
dvd.print();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Database db=new Database();
db.add(new CD("abc", "abc", 4,60, "..."));
db.add(new CD("def","def",4,60,"..."));
db.add(new DVD("xxx","aaa",60,"..."));
db.list();
}
}
CD.java:
package dome;
public class CD {
private String title;
private String artist;
private int numofTracks;
private int playingTime;
private boolean gotIt=false;
private String comment;
public CD(String title, String artist, int numofTracks, int playingTime, String comment) {
// super();
this.title = title;
this.artist = artist;
this.numofTracks = numofTracks;
this.playingTime = playingTime;
this.comment = comment;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public void print() {
// TODO Auto-generated method stub
System.out.println("CD:"+title+":"+artist);
}
}
DVD.java:
package dome;
public class DVD {
private String title;
private String director;
private int playingTime;
private boolean gotIt=false;
private String comment;
public DVD(String title, String director, int playingTime, String comment) {
super();
this.title = title;
this.director = director;
this.playingTime = playingTime;
this.comment = comment;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public void print() {
// TODO Auto-generated method stub
System.out.println("DVD:"+title+":"+director);
}
}
6.继承(extends)
子类可以继承到所有父类的东西。
public class CD extends Item
父类中说自己是private的东西,就只有父类自己可以用
protect:可以让子类访问到父类中哪些标志为protect的成员
7.子类和父类的关系
如果子类当中有父类当中有过的完全相同的成员变量,在子类当中,父类的那个就被隐藏起来了(在子类当中说的是子类自己的)。但是回到父类当中时,操作的是父类的。
Database.java:
package dome;
import java.util.ArrayList;
public class Database {
private ArrayList<Item> listItem=new ArrayList<Item>();
public void add(Item item) {
listItem.add(item);
}
public void list() {
for(Item item:listItem) {
item.print();
}
}
public static void main(String[] args) {
Database db=new Database();
db.add(new CD("abc", "abc", 4,60, "..."));
db.add(new CD("def","def",4,60,"..."));
db.add(new DVD("xxx","aaa",60,"..."));
db.list();
}
}
DVD.java:
package dome;
public class DVD extends Item{
private String director;
public DVD(String title, String director, int playingTime, String comment) {
super(title,playingTime,false,comment);
setTitle("b");
this.director = director;
}
public static void main(String[] args) {
DVD dvd=new DVD("a","b",1,"..");
dvd.print();
}
public void print() {
System.out.print("DVD:");
super.print();
System.out.print(director);
}
}
CD.java:
package dome;
public class CD extends Item{
private String artist;
private int numofTracks;
public CD(String title, String artist, int numofTracks, int playingTime, String comment) {
super(title,playingTime,false,comment);
this.artist = artist;
this.numofTracks = numofTracks;
}
public static void main(String[] args) {
CD cd=new CD("a","b",2,2,"...");
cd.print();
}
}
Item.java:
package dome;
public class Item {
private String title;
private int playingTime;
private boolean gotIt=false;
private String comment;
public Item() {
}
public Item(String title, int playingTime, boolean gotIt, String comment) {
super();
this.title = title;
this.playingTime = playingTime;
this.gotIt = gotIt;
this.comment = comment;
}
public void setTitle(String title) {
this.title=title;
}
public void print() {
System.out.print(title);
}
}
8.super()的用法
由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。
super可以理解为是指向自己父类的一个指针,有三种用法
(1)直接引用
相当于是指向当前对象的父类,这样就可以用super.xxx来引用父类的成员
(2)子类中的成员变量或方法与父类中的成员变量或方法同名
class Country {
String name;
void value() {
name = "China";
}
}
class City extends Country {
String name;
void value() {
name = "Shanghai";
super.value(); //调用父类的方法
System.out.println(name);
System.out.println(super.name);
}
public static void main(String[] args) {
City c=new City();
c.value();
}
}
运行结果:
Shanghai
China
(3)引用构造函数
super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。