浏览 1844 次
锁定老帖子 主题:java-review-oo
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-18
OO:封装(整体性,信息隐蔽)继承多态 对象:某些事物的一个抽象,属性(静态特性),服务(动态特性) 类:具有相同属性的一组对象的集合。 new创建对象的时候,每一个对象的属性占用不同的内存区域,服务是共用的。 static{...}不在任何的方法中,classloader加载的时候按照顺序执行,而且只执行一次。 int-Integer char-Character 特殊类-一般类 protected:可以被子类访问,但是其他的不相干类不能访问。 子类从父类继承到了:父类除了构造之外的所有成员,以及父类从它的父类那得到的所有成员。 子类对象不能访问对象中父类中的private 方法覆盖:在子类中定义跟父类完全一样(名字,返回值,参数)的方法。 方法覆盖不能缩小方法的访问权限,只能相同或扩大(private->public).WHY??? 子类方法不能抛出比父类方法更多的异常。 前者抛出的异常必须和后者抛出的异常相同,或前者抛出的异常是后者抛出异常的子类; 是否静态不能改变。 方法覆盖可以用来使成员屏蔽(public->private),是子类不可见(即不提供给子类)。 super对超类对象的引用。 超类构造函数: 在子类的构造的第一行:super(参数表) 父类中有收尾,例如clearUp(),不是finaliz,在子类可以用super.clearUp()来调用。 final用于非抽象。类不能被继承。方法不能被子类的方法覆盖。变量为常量。必须初始化。 多态:同一个符号或名字在不同的环境下有不同的含义。 运行时多态(重载),编译时多态(继承,动态绑定)。 重载:一个类中多个方法,名字相同,参数不同。返回值相同。 运行时找最接近的参数表。 public static void main(String[] args) { SuperClass superObj = new SuperClass(); SubClass subObj = new SubClass(); SuperClass superReferToSub = subObj; } superReferToSub仍然是SC,但是指向的是SubClass。 package practice; public class Student { private String name; private String age; protected int grade; public String address; Student(String id){ System.out.println("Superclass->constructor "+id); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } public void SayHello() { System.out.println("I'm a student."); } } package practice; public class Graduate extends Student { Graduate(){ super("tiantian"); } public void SayHello() { System.out.println("I'm a graduate."); super.SayHello(); } public static void main(String[] args) { Graduate g = new Graduate(); g.setName("Lucy"); g.setAge("23"); g.setGrade(2); g.address = "harbin"; System.out.println(g.grade); System.out.println(g.address); g.SayHello(); } } 2008年4月17日 19:49:55 java允许祖先类引用指向后代类 Student s = new GraduateStudent() 所以一个引用变量有静态类型和动态类型两种类型。 所谓的运行时多态:在运行的时候决定调用哪个方法,如果子类重写了父类的方法则调用子类的方法,没有重写则只能调用父类的方法。 抽象类:abstract。public abstract class MyAbstractClass,不能实例化,只能继承。 用于建模现实世界中的纯粹抽象概念,鸟,鱼,灯,树。 方法名和形式参数表两部分又合称该方法的基调。-signature by lifuwang 抽象方法只能在抽象类中。 抽象类不一定有抽象方法。包含抽象方法的类一定是抽象类??? 接口interface:纯虚 java中interface可以视为特殊的abstract类。只能定义共有的静态常量数据成员(只能是static final public的组合,是组合!必须实例化缺省为psf),只能定义公有的抽象方法(pa)。 public class ControllableDemo { public static void main(String[] args) { Television obj = new Television("创维"); Controllable ref = obj; ref.setPower(Controllable.ON); if (ref.isPowerOn()) System.out.println(((Television) ref).getTradeMark() + "牌电视的电源已经开启!"); } } 接口的使用: 声明接口的引用,把对象赋值给这个引用,然后就可以使用这个引用去调用实现了这个接口的所有类。 Class PlayMusic implements Runable{void start();} Class Count implements Runable{void start();} PlayMusic pm = new PlayMusic(); Count c = new Count(); Runable r = pm; r.start; r = c; r.start; java中除了.之外所有的双目运算符的两侧都有空格。 2008年4月17日 20:09:38 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |