java中的类

来源:互联网 发布:广告单页设计软件 编辑:程序博客网 时间:2024/06/08 03:31

目录

  • 内部类
  • 局部类
  • 匿名内部类
  • 抽象类
  • 学习问题
  • 备注代码

内部类

内部类:在类的内部定义的类。内部类可以调用该外部类的属性。
格式:class 类名{}

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 类名{}

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的后面,用其隐含实现一个接口或实现一个类。
因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

//匿名内部类    Paper paper2=new Paper(){        public String getPapersize(){            return "B5";        }    };//这里需要一个;号
//在方法中返回一个匿名内部类 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+类名{}
注意:抽象类中不一定有抽象方法。
抽象类不能创建对象,抽象类中的抽象方法可以在子类中实现具体的方法。
例如:

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

抽象方法:只有方法名没有方法体 无具体实现,可以在子类中实现。
注意: 抽象方法必须是在抽象类中。
抽象方法必须在抽象类中否则出错,如下:这里写图片描述

0 0
原创粉丝点击