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

java中的类

2015-08-01 22:16 656 查看

目录

内部类

局部类

匿名内部类

抽象类

学习问题

备注代码

内部类

内部类:在类的内部定义的类。内部类可以调用该外部类的属性。

格式:class 类名{}

[code]public class Student {
    private int age;
    private String name;
public class Pen{              //初学者注意:类名不能加括号()
        //内部类中可以调用外部类的name与age
        String color;
        String brand;
        String name;
        public String getName() {
            return name;
        }
    }
}


局部类

局部类:在方法中定义的类。

格式:class 类名{}

[code]public class Student {
    private int age;
    private String name;
    //这是一个学习的方法
    public void study(){
        System.out.println("正在学习");
        //局部类 在方法中的类
        class Books{ 
            String name;
            int page;
            public int getPage() {
                return page;
            }
            public void setPage(int page) {
                this.page = page;
            }
        }
    }


匿名内部类(部分参考他人)

匿名内部类:匿名内部类就是没有名字的内部类。主要在观察者模式内使用,在Android主要事件里使用。如果满足下面的一些条件,使用匿名内部类是比较合适的:

(1)当只是用一次这个类的对象时使用。

(2)类在定义后马上用到。

(3)类非常小(SUN推荐是在4行代码以下)

在使用匿名内部类时,要记住以下几个原则:

(1)匿名内部类不能强制造型

(2)匿名内部类不能有构造器。

(3)匿名内部类不能定义任何静态成员、方法和类。

(4)匿名内部类不能是public,protected,private,static。

(5)只能创建匿名内部类的一个实例。

(6)一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。

因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

[code]//匿名内部类
    Paper paper2=new Paper(){
        public String getPapersize(){
            return "B5";
        }
    };//这里需要一个;号


[code]//在方法中返回一个匿名内部类 
public class Parcel6 { 
        public Contents cont() { 
                return new Contents() { 
                     private int i = 11; 

                     public int value() { 
                            return i; 
                     } 
              }; // 在这里需要一个分号 
        } 

        public static void main(String[] args) { 
                Parcel6 p = new Parcel6(); 
                Contents c = p.cont(); 
        } 
}


cont()方法将下面两个动作合并在一起:返回值的生成,与表示这个返回值的类的定义!

抽象类(abstract)

抽象类:在解决实际问题时,一般将父类定义为抽象类。利用abstrack定义抽象类。抽象类中的方法可以有抽象方法,也可以有其他的方法。也就是说抽象类不一定有抽象方法。

格式:public abstract class+类名{}

注意:抽象类中不一定有抽象方法。

抽象类不能创建对象,抽象类中的抽象方法可以在子类中实现具体的方法。

例如:

[code]public abstract class Animal {

    public abstract void voice();
    //此处为抽象方法,该方法的具体实现只能在子类中实现。
    public void sleep(){
        System.out.println("小动物们睡觉了");
    }
    //此为具体的方法,可见抽象类中不一定必须是抽象的方法。
}


抽象方法:只有方法名没有方法体 无具体实现,可以在子类中实现。

注意: 抽象方法必须是在抽象类中。

抽象方法必须在抽象类中否则出错,如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: