5 1 3 CircleRectangle public class Circle public
5. 1 抽象类(3) § 两个类Circle和Rectangle public class Circle { public class Rectangle { public float width, height; public float r; Rectangle (float width, float height){ Circle(float r){ this. width = width; this. r = r; this. height = height; } } public double area(){ return 3. 14*r*r; return width*height; } }
abstract class Shape{ abstract double area(); 5. 1 抽象类(5) class Circle extends Shape{ } class Rectangle extends Shape{ public float radius ; public float width, height; Circle(float radius){ Rectangle (float w, float h){ this. width = width; this. radius = radius; this. height = height; } } public double area(){ public double area() { return 3. 14* radius; return width*height; } }
5. 2. 3 接口的扩展(例) interface I 1{ void f 1(); } interface I 2{ void f 2(); } interface Ie 1 extends I 2{ void fe 1(); } interface Ie 2 extends Ie 1, I 1{ // 只有在接口的情况下才能继承多个 接口。 void fe 2(); }
5. 2. 4 接口的嵌套(类嵌套接口) class A { interface B { void method(); } private interface B { void method(); } }
5. 2. 4 接口的嵌套(接口嵌套接口) interface A { interface B { void f(); } public interface C{ void f(); } }
5. 3. 2局部内部类(2) public Interface Inner. Method 2(){ //创建一个局部内部类,继承自Interface接口 class Inner. Local implements Interface{ public void get. Info(){ System. out. println("local. Class"); } } /*在方法类创建该类的对象,并调用其方法。这个是被允许的*/ Interface local = new Inner. Local(); local. get. Info(); return local; }
5. 3. 2局部内部类(3) public Interface show. Local. Class(final boolean flag){ if(flag){ class Inner. Local implements Interface{ public void get. Info(){ System. out. println("local. Class" + flag); } } Interface local = new Inner. Local(); local. get. Info(); return local; } else { class Inner. Local implements Interface{ public void get. Info(){ System. out. println("local. Class" + flag); } } Interface local = new Inner. Local(); local. get. Info(); return local; }
5. 3. 3静态内部类(2) public class Static. Inner. Class { private static class Inner. Class{ void get. Info(){ System. out. println("Inner. Class"); } } }
5. 3. 4匿名内部类(1) abstract class Anonymous. Class{ abstract public String value(); } public class Anonymous. Class. Demo{ public Anonymous. Class makeac(){ return new Anonymous. Class(){ string str = "Anonymous. Class"; public String value(){ return str; } }
5. 3. 4匿名内部类(2) return new Anonymous. Class(){ class My. Anonymous. Class string str = "Anonymous. Class"; implements Anonymous. Class{ string str = "Anonymous. Class"; public String value(){ return str; } };
5. 3. 4匿名内部类(3) 在需要参数的情况 : public class Anonymous. Class. Demo 2{ public Anonymous. Class makeac(int x){ return new Anonymous. Class(x){ public int value(){ return super. value()*10; } }; }
5. 3. 4匿名内部类(4) 对内部类中定义的字段进行初始化 (必须将参数设为 final) public class Anonymous. Class. Demo 3{ public Anonymous. Class makeac(final String str 1){ return new Anonymous. Class(){ private String str = str 1; public String value(){ return str; } }; } n
5. 3. 5内部类的继承 class Outer. Class{ class Inner. Class{} } public class Inherit. Inner. Class extends Outer. Class. Inner. Class{ //Inherit. Inner. Class(); 不能被编译。 public Inherit. Inner. Class(Outer. Class outer){ outer. super(); } }
5. 4. 1 创建并命名自己的包 n 建立一个包,把你的类和接口放到里面。这需要把 package 语句放 到源文件的顶部。 package com. my. Package; public class Test. Package{ public static void main(String [] rgs){ new Test(). print(); } } class Test{ public void print(){ System. out. println("test of using package!"); } }
5. 4. 2 包的引用 n 用成员的全称来访问它(包含路径和包 名) n n com. my. Package. A. A my. A = new com. my. Package. A. A(); 导入包的成员 n import com. my. Package. A. A; A my. A = new A();
- Slides: 39