1.
/**
*
*
* 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);
}
}
}
public class MainClass {
public static void main(String[] args) {
Father.Child c = new Father().new Child();
c.introFather();
}
}
2.
//2.简述下列程序运行结果:
class A{
int y=6;
class Inner{
static int y = 3;
void show(){
System.out.println(y);
}
}
}
class Demo{
public static void main(String [] args){
A.Inner inner=new A().new Inner();
inner.show();
}
}
//编译失败,因为Inner类是A类的非静态成员,所以只有在外部类创建对象之后,
//才开始加载,但是内部类有静态成员,又需要在创建外部类对象之前完成。这二者之间矛盾了。
3.
//3.写出下面程序运行结果:
class A{
public A(){
System.out.println("A");
}
}
class B extends A{
public B(){
//super()
System.out.println("B");
}
public static void main(String[] args){
B b=new B();
}
}
//A B
4.
/**
打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",
因为153=1的三次方+5的三次方+3的三次方。
*/
public class MainClass{
public static void fun(){
for(int i = 100;i<1000; i++){
//百位
int hundred = i/100;
//十位
int decade = (i%100)/10;
//个位
int single = i%10;
//if(hundred+decade>17)break;
if(hundred*hundred*hundred + decade*decade*decade + single*single*single == i)
System.out.println(i);
}
}
public static void main(String[] args) {
fun();
}
}
5.
/**
定义一个抽象的"Role"类,有姓名,年龄,性别等成员变量
1)要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有),
再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法,
该方法不返回任何值,同时至少定义两个构造方法。Role类中要体现出this的几种用法。
*/
abstract class Role{
private String name;
private int age;
private String sex;
//同时至少定义两个构造方法。Role类中要体现出this的几种用法。
public Role(){
System.out.println("自动调用Role类的无参构造");
}
public Role(String name, int age, String sex){
this();
this.name = name;
this.age = age;
this.sex = 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();
}
/**
* 从Role类派生出一个"Employee"类,该类具有Role类的所有成员(构造方法除外),
并扩展salary成员变量,同时增加一个静态成员变量“职工编号(ID)”。
同样要有至少两个构造方法,要体现出this和super的几种用法,还要求覆盖play()方法,
并提供一个final sing()方法。
* @author Z7M-SL7D2
*
*/
class Employee extends Role{
public static int ID = 1000;
private float salary;
public Employee(){
System.out.println("Employee的无参构造");
}
public Employee(float salary){
this.salary = salary;
}
public Employee(String name, int age, String sex, float salary){
//super显示调用父类有参构造
super(name, age, sex);
this.salary = salary;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
public final void sing(){
System.out.println("Employee的sing()方法");
}
@Override
public void play(){
System.out.println("Employee的play()方法, 员工干活");
}
}
/**
* 3)"Manager"类继承"Employee"类,有一个final成员变量"vehicle"
在main()方法中制造Manager和Employee对象,并测试这些对象的方法。
*/
class Manager extends Employee{
final String vehicle = "媒介";
}
public class MainClass{
public static void main(String[] args) {
Manager m = new Manager();
m.play();
m.sing();
Role r = new Employee("Tom", 20, "男", 8000.0f);
r.play();
}
}
结果分析:
创建子类Manager对象时会自动调用父类(Employee)的无参构造,调用父类(Employee)的无参构造时。会自动首先调用其父类(Role)的无参构造。最后再调用本类无参构造。由于无参构造空实现,所以没打印任何语句。