1.定义一个Father和Child类,并进行测试。
要求如下:
(1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangjun”。
(2)Child类为Father类的内部类,其中定义一个introFather()方法,方法中调用Father类的name属性。
(3)定义一个测试类Test,在Test类的main()方法中,创建Child对象,并调用introFather ()方法。
class Father{
private String name = "zhangjun";
class Child{
public void introFather(){
System.out.println(name);
}
}
}
class Test{
public static void main(String[] args) {
Father.Child child = new Father().new Child();
child.introFather();
}
}
2.简述下列程序运行结果:
class A{
int y=6;
class Inner{
static int y=3;
void show(){
System.out.println(y);
}
}
}
class Test{
public static void main(String [] args){
A.Inner inner=new A().new Inner();
inner.show();
}
}
// 运行结果:编译失败,当内部类中有静态成员时,内部类也必须是静态的
3.写出下面程序运行结果:
public class Test {
class A {
public A() {
System.out.println("A");
}
}
class B extends A {
public B() {
System.out.println("B");
}
public static void main(String[] args) {
B b = new B();
}
}
}
// 编译结果:先打印A,再打印B
4.编程打印出所有的 "水仙花数 "。
所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
public class Test{
public static void main(String[] args) {
for (int i=100; i<=999; i++){
int j = 0;
int x = i%10;
int y = (i/10)%10;
int z = i/100;
if(i == x*x*x + y*y*y + z*z*z ){
System.out.println(i);
}
}
}
}
//输出结果:三位的水仙花数共四个:153/370/371/407
5.编程题:
定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量。
(1)要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法,该方法不返回任何值,同时至少定义两个构造方法。Role类中要体现出this的几种用法。
(2)从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法除外),并扩展salary成员变量,同时增加一个静态成员变量“员工编号(ID)”。同样要有至少两个构造方法,要体现出this和super的几种用法,还要求覆盖play()方法,并提供一个final sing()方法。
(3)“Manager"类继承"Employee"类,有一个final成员变量"vehicle”,在main()方法中制造Manager和Employee对象,并测试这些对象的方法。
abstract class Role{
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public abstract void play();
public Role(){}
public Role(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
}
class Employee extends Role{
private double salary;
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
private String ID;
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public Employee(){}
public Employee(String name,int age,String sex,double salary,String ID){
super(name, age, sex);
this.salary = salary;
this.ID = ID;
}
public void play(){
System.out.println("员工编号:"+this.getID());
}
final void sing(){
System.out.println("姓名:"+this.getName()+
",性别:"+this.getSex()+
",年龄:"+this.getAge()+
",薪资:"+this.getSalary());
}
}
class Manager extends Employee{
final String vehicle;
public Manager (String name, int age, String sex, double salary, String ID, String vehicle){
super(name, age, sex, salary, ID);
this.vehicle = "Porsche";
}
}
class Test{
public static void main(String[] args) {
Employee employee1 = new Employee("小燕子",18,"女",20000,"测开2020001");
employee1.play();
employee1.sing();
Employee employee2 = new Employee("夏紫薇",18,"女",20000,"测开2020002");
employee2.play();
employee2.sing();
System.out.println("开"+ employee2.vehicle);
}
}