java练习,继承,接口,多态,泛型中的通配符,外部类

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
 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值