第04章+面向对象的编程(高级语法).ppt
文本预览下载声明
Inner Class的对象关系 外部类的 对象 内部类的 对象 内部类有如下特性: 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。 Java将内部类作为外部类的一个成员,就如同成员变量和成员方法一样。因此外部类与内部类的访问原则是:在外部类中,通过一个内部类的对象引用内部类中的成员;反之,在内部类中可以直接引用它的外部类的成员,包括静态成员、实例成员及私有成员。 内部类 【例】 内部类和外部类之间的访问 本例的类Group中声明了内部类Student,在内部类Student中构造方法存取了外部类Group的成员变量age。 本例的外部类Group中有实例方法output(),内部类Student中也有实例方法output(),两者虽然同名,却表达不同含义。 外部类Group的对象调用Group的output,如g.output(),内部类Student的对象调用Student的output,如stu.output()。 内部类 public class Group { private int age; //声明外部类的私有成员变量 public class Student{ //声明内部类 String name; //声明内部类的成员变量 public Student(String n,int a){ name=n; age=a; //访问外部类的成员变量 } public void output() //内部类的成员方法 { System.out.println(姓名:++;年龄:+age); } } public void output(){ //定义外部类的成员方法 Student stu=new Student(刘洋,24); //创建内部类的对象 stu.output(); //通过stu调用内部类的成员方法 } public static void main(String[] args){ Group g=new Group(); g.output(); //用g调用外部类的方法 } } 4.6.3 匿名类 匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。 要采用另一种形式的new语句,如下所示: ? new 类或接口 类的主体 ??? 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。 从技术上说,匿名类可被视为非静态的内部类,所以它们具有和方法内部声明的非静态内部类一样的权限和限制。???? 内部和匿名类是Java为我们提供的两个出色的工具。它们提供了更好的封装,结果就是使代码更容易理解和维护,使相关的类都能存在于同一个源代码文件中(这要归功于内部类),并能避免一个程序产生大量非常小的类(这要归功于匿名类)。 匿名类 * 继承表示现实世界中遗传关系的直接模拟。 它表示类之间的内在联系以及对属性和操作的共享。 引入继承的特点:子类具有父类的一般特性(属性、行为)、自身特殊的特性。 * 根据前面的讲解,让学生体会每一点对于软件开发带来的好处 实际上,private,public,protected和继承没有关系,他们对成员函数和变量的限制只是在成员的可见性上,public允许来自任何类的访问;private只允许来自该类内部的方法访问,不允许任何来自该类外部的访问;protected允许来自同一包中的任何类以及该类的任何地方的任何子类的方法访问.而关于成员变量的继承,父类的任何成员变量都是会被子类继承下去的,这些继承下来的私有成员虽对子类来说不可见,但子类仍然可以用父类的函数操作他们.这样的设计有何意义呢?我们可以用这个方法将我们的成员保护得更好,让子类的设计者也只能通过父类指定的方法修改父类的私有成员,这样将能把类保护得更好 * * Scanner input=new Scanner(System.in); System.out.println(“请输入学校名称); school =intput.next(); System.out.println(“请分别输入英语和JAVA课程的分数。); * System.out.println(school+ “的同学+name+“年龄为:”+age+“英语成绩是:”+engScore+
显示全部