您的位置:首页 > 编程语言 > Java开发

Java面向对象进阶

2012-12-03 22:52 260 查看
相关额外的代码待上传。。。

/**
* 面向对象进阶
*/
package com.org.lxh;

import com.org.lxh.ext.Demo;
import com.org.lxh.impl.AysTest;
import com.org.lxh.impl.Person;
import com.org.lxh.impl.Test;
import com.org.lxh.inter.InterTest;
import com.org.lxh.obj.Address;
import com.org.lxh.obj.ClassA;
import com.org.lxh.obj.Cow;
import com.org.lxh.obj.Dog;
import com.org.lxh.obj.Employee;
import com.org.lxh.obj.OutputInnerClass;

/**
* @author hemmingway <hemmingway@163.com>
*
*/
public class Chp7 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

//1、Java没有像C++一样的引用传递,只有值传递
/*
*
*
*/

//2、接口和抽象类有什么区别?
/*
* 一个类可以是以实现多个接口。但是只能继承一个抽象类
* 定义接口参见 com.org.lxh.inter;
* 实现接口 com.org.lxh.impl
*
*/
Test tst = new Test();		//接口使用范例
tst.doTest();

Demo demo = new Demo();		//抽象类的范例
demo.doSomething();

//3、如何调用父类的构造方法?
/*
* super
*
* Dog类中使用super关键字
*
*/
Dog d = new Dog();
System.out.println("Animal的种类是:" + d.name);		 //Animal的种类是:Dog

Cow c = new Cow();
System.out.println("Animal的种类是:" + c.name);		 //Animal的种类是:Cow

//4、方法的重写
/*
*
*/
d.cry();
c.cry();

//5、如何操作被隐藏的成员变量和被重写的成员方法?
/*
* 如果想在子类中操作父类中被隐藏的成员变量和被重写的成员方法,也可以使用super关键字。具体格式如下:
* super.成员变量名;
* super.成员方法名;
*
* 例如Dog类中的move()方法中使用super
*
*/
d.move();

//6、final、finally、finalize有什么区别
/*
* final修饰一个类时,表示最终的类,不能继承的;如果修饰一个变量表示不能修改了;修饰一个方法,表示不可以重写。
*
* finally用于异常处理,即使前面的代码没有异常,该代码块中的代码也会执行。通常用于资源释放。
*
* finalize是Object类中定义的一个方法,可以重写,用于资源回收。
*
*/
d.goHome();		//这个方法在Animal中北final修饰

//7、Java中如何模拟多重继承?
/*
* Java中不支持多重继承,需要使用接口实现
* 范例:定义三个借口IPeople、ITeacher和IStudent
* Person类实现这三个接口
*/
Person p = new Person();
p.setName("我叫无语");
p.setSex("男");
System.out.println(p.teach());

p.setName("琦琦");
p.setSex("女");
System.out.println(p.study());

//7、Java克隆对象?
/*
* 1.浅克隆
* 相关的类有Address以及Employee
*
*/
System.out.println("克隆前(浅克隆)");
Address address = new Address("China", "Hunan", "Hengyang");
Employee emp1 = new Employee("hemmingway", 25, address);
System.out.println("员工1的信息: " + emp1);

Employee emp2 = emp1.clone();
emp2.setName("washa");
emp2.getAddress().setCity("zhouzhou");
System.out.println("员工2的信息: " + emp2);

//8. 内部类是否可以被继承?
/*
* 查看类 OutputInnerClass 的示范
*/
ClassA a = new ClassA();
OutputInnerClass oic = new OutputInnerClass(a);
oic.test();

//9.如何调用内部类和外部类同名的成员?
/*
*
*
*/

//10. 什么是匿名内部类?
/*
* 创建一个InterTest接口
*
* AysTest
*
*/
AysTest ts = new AysTest();
ts.showInfo(new InterTest(){
public void printInfo() {				//匿名内部类的类体
System.out.println("这里实现接口的方法。。。");
}
});

}

}


在这里实现接口的方法,表示like-a关系
这里是继承抽象类,表示is-a关系
Animal的种类是:Dog
Animal的种类是:Cow
汪汪
cow cry....
animal move here....
animal move special type addone!
跑、咬、叫。。。
animal go home!!
姓名:我叫无语男教师
姓名:琦琦女学生
克隆前(浅克隆)
员工1的信息:姓名: hemmingway,年龄:
25,地址:国家: China,省: Hunan,城市:
Hengyang
员工2的信息:姓名: washa,年龄:
25,地址:国家: China,省: Hunan,城市:
zhouzhou
i'am inner class b
这里实现接口的方法。。。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐