相关额外的代码待上传。。。
/*** 面向对象进阶*/
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的种类是:DogCow 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
这里实现接口的方法。。。