day03

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(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值