内部类
Object类
清醒温柔知进退,努力上进且优秀
努力到无能为力,拼搏到感觉自己
加油!
2.(toString方法)写出下面代码运行结果
class Student{
private int age;
private String name;
public Student(){
}
public Student(String name, int age){
this.name = name;
this.age = age;
}
public String toString(){
return name + “ ” + age;
}
}
public class TestStudent{
public static void main(String args[]){
Student stu1 = new Student();
Student stu2 = new Student(“Tom”, 18);
System.out.println(stu1);
System.out.println(stu2);
}
}
运行结果为:
null 0
Tom 18
3.(equals)写出下面程序运行的结果
public class TestEquals{
public static void main(String args[]){
String str1 = new String(“Hello”);
String str2 = new String(“Hello”);
System.out.println(str1.equals(str2));
System.out.println(str1 == str2);
}
}
运行结果为:
true
false
4.(getClass)写出下面程序运行的结果
class Animal{}
class Dog extends Animal{}
public class TestGetClass{
public static void main(String args[]){
Animal a1 = new Dog();
Animal a2 = new Animal();
System.out.println(a1 instanceof Animal);
System.out.println(a1.getClass() == a2.getClass());
}
}
运行结果为:
true
false
5.(内部类)Java 中的内部类包括
A.成员内部类
B.静态内部类
C.局部内部类
D.匿名内部类
E.公开内部类
F.抽象内部类
ABCD
6.为 Worker 类增加 equals 和 toString 方法
public class TestWorker {
public static void main(String[] args) {
Worker[] workers = new Worker[] {
new Worker("Tom",23,"男",3000.0),
new Worker("Tom",23,"男",3000.0),
new Worker("Jack",22,"男",7000.0)};
for(int i = 0 ;i < workers.length ; i++) {
System.out.println(workers[i].toString());
}
System.out.println(workers[0].equals(workers[1]));
System.out.println(workers[0].equals(workers[2]));
}
}
class Worker{
String name;
int age;
String sex;
double salary;
public Worker() {}
public Worker(String name, int age, String sex, double salary) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.salary = salary;
}
public String toString() {
return name + "\t" + age + "\t" + sex + "\t" + salary;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (this.getClass() != obj.getClass()) {
return false;
}
Worker worker = (Worker) obj;
if (this.name.equals(worker.name) && this.age == worker.age && this.sex.equals(worker.sex) && this.salary == worker.salary) {
return true;
}
return false;
}
}
运行结果
Tom 23 男 3000
Tom 23 男 3000
Jack 22 男 7000
true
false
9.(局部内部类)有下面代码
class OuterClass{
private int value1 = 100;
private static int value2 = 200;
public void method(int value3){
final int value4 = 400;
class InnerClass{p
ublic void print(){
//1
}
}
}
}
问:下面哪些代码放在//1 处能够编译通过?
A.System.out.println(value1);
B.System.out.println(value2);
C.System.out.println(value3);
D.System.out.println(value4);
ABCD
10.已知接口 Light 定义如下:
interface Light{
void shine();
}
//定义 Lamp 类:
class Lamp{
public void on(Light light){
light.shine();
}
}
//写一个类 TestLamp,部分代码如下:
public class TestLamp{
public static void main(String args[]){
Lamp lamp = new Lamp();
//1
//2
}
}
把 TestLamp 类补充完整,要求:
Ⅰ.在//1 处使用局部内部类技术,调用 lamp 的 on 方法要求输出”shine in red”
II. 在//2 处使用匿名内部类技术,调用 lamp 的 on 方法要求输出”shine in yellow”
第一题:
class RedLight implements Light{
@Override
public void shine() {
System.out.println("shine in red");
}
}
lamp.on(new RedLight());
第二题:
lamp.on(new Light(){
public void shine() {
System.out.println("shine in yellow");
}
}