package pa;
class Peo {
public String name;
public String sex;
public String bothnum;
public String printInfo() {
return"姓名:"+' '+name+'\n'+"性别:"+' '+sex+'\n'+"出生年月:"+' '+bothnum;
}
}
class Teacher extends Peo{
public String school;
public int workID;
public String printInfo() {
return super.printInfo()+'\n'+"学校:"+' '+school+'\n'+"工号:"+' '+workID;
}
}
class Student extends Peo{
public String school;
public int id;
public String discipline;
public String grade;
public String classes;
public String printInfo() {
return super.printInfo()+'\n'+"学校:"+' '+school+'\n'+"学号:"+' '+id+'\n'+"专业:"+' '+discipline+'\n'+"年级:"+' '+grade+'\n'+"班级:"+' '+classes;
}
}
public class People{
public static void main(String args[]) {
Teacher t=new Teacher();
t.name="Tom";
t.sex="男";
t.bothnum="19800809";
t.school="大学";
System.out.println(t.printInfo());
}
}
这段代码定义了三个类:Peo、Teacher和Student,它们都是从Peo类继承而来的。其中,Peo类包含了姓名、性别和出生年月等基本信息,以及一个打印个人信息的方法printInfo()。Teacher类继承了Peo类,并添加了学校和工号等属性,同时重写了printInfo()方法。Student类也继承了Peo类,并添加了学校、学号、专业、年级和班级等属性,同样重写了printInfo()方法。在People类的main方法中,创建了一个Teacher对象t,并为其设置了姓名、性别、出生年月、学校等属性,然后调用printInfo()方法打印出教师的个人信息。
package c;
import java.util.*;
class Cage<E> extends LinkedList<E>{};
class Animal{
public void feedMe() {};
}
class Lion extends Animal{
public void feedMe() {
System.out.println("Feeding lions");
}
}
class Butterfly extends Animal{
public void feedMe() {
System.out.println("Feeding butterflies");
}
}
public class WildcardsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
WildcardsTest t=new WildcardsTest();
Cage<Lion>lionCage=new Cage<Lion>();
Cage<Butterfly>butterflyCage=new Cage<Butterfly>();
lionCage.add(new Lion());
butterflyCage.add(new Butterfly());
t.feedAnimals(lionCage);
t.feedAnimals(butterflyCage);
}
void feedAnimals(Cage<? extends Animal> someCage) {
for(Animal a:someCage)
a.feedMe();
}
}
这段代码定义了一个名为WildcardsTest的类,其中包含了一个main方法和一个feedAnimals方法。在main方法中,创建了两个Cage对象,分别用于存放Lion和Butterfly对象。然后调用feedAnimals方法,传入这两个Cage对象作为参数。
feedAnimals方法接受一个泛型参数为Animal或其子类的Cage对象,然后遍历这个Cage对象中的所有Animal对象,并调用它们的feedMe方法。由于使用了通配符(? extends Animal),所以这个方法可以接受任何Animal或其子类的Cage对象作为参数。
package pa;
class MyBox<T>{
private T t;
public void add(T t) {
this.t=t;
}
public T get() {
return t;
}
public <U>void inspect(U u){
System.out.println("T:"+t.getClass().getName());
System.out.println("U:"+u.getClass().getName());
System.out.println();
}
}
public class BoxText {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyBox<Integer>integerBox=new MyBox<Integer>();
integerBox.add(new Integer(10));
System.out.println("The first inspection:");
integerBox.inspect("some text");
System.out.println("The second inspection:");
integerBox.inspect(new Double(100.0));
}
}
这段代码定义了一个名为MyBox的泛型类,其中包含一个泛型成员变量t。类中有三个方法:add()用于设置t的值,get()用于获取t的值,inspect()用于打印t和传入参数的类型信息。在main方法中,创建了一个MyBox实例integerBox,并分别用字符串和Double类型的对象调用inspect()方法。
输出结果如下:
The first inspection:
T:java.lang.Integer
U:java.lang.String
The second inspection:
T:java.lang.Integer
U:java.lang.Double
package pa3;
class Outer{
String name;
int i;
public Outer() {
name="Outer";
i=20;
}
class Inner{
String name;
int i;
public Inner() {
name="Inner";
i=10;
}
public void printlnfo() {
System.out.println("外部类:"+'\n'+"name:"+Outer.this.name+" "+"i:"+Outer.this.i);
System.out.println("内部类:"+'\n'+"name:"+name+" "+"i:"+i);
}
}
}
class TestOuter {
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer o=new Outer();
Outer.Inner i=o.new Inner();
i.printlnfo();
}
}
外部类:
name:Outer i:20
内部类:
name:Inner i:10