本帖最后由 小石姐姐 于 2017-12-23 10:31 编辑
就业班技术总结
继承 多个类有共同的成员变量和成员方法相同的方法代码可以归档到一个方法(父类)里面让,多个类 在main中直接创建子类对象,调用,在子类类名的加Extends 加父类类名即可以继承 特点: java语言中只支持单一继承,一个子类只能继承一个父类 java语言中支持多层继承(即跨层继承) 继承中成员变量的特点 属性 子类只能继承父类非私有成员 在子父类中成员变量的名字 不一样时获取父类的成员变量 在子父类中成员变量的名字一样时获取子类的成员变量(变量的使用原则:就近原则) super 可以获取父类的成员变量和成员方法 直接输出super加成员变量 this 使用本类 super使用父类 如果有局部变量就是用使用局部变量 局部变量(在方法中) 如果没有局部变量,有子类的成员变量就使用子类的成员变量 如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量 局部变量是在方法里面的 继承中成员方法的特点 行为 方法的重写 在子父类中,子类的方法和父类的方法完全一样,子类重写了父类的方法 当子类重写了父类的方法时,使用子类对象调用就是子类的方法 特点 子类中没有这个方法,调用父类的方法 子类中重写了这个方法,调用子类的 父类中也没有,则会报错
方法重写的应用场景 1、当父类的方法不能完全满足子类的使用时,这个时候重写父类的方法 2、并可以在方法中使用关键字super调用父类的方法,这样既可以获取父类的功能,也可以拥有子类的特有功能。super.方法名() 方法重写的注意事项 注解@开头,写在方法、类上面 1、不能重写父类私有的方法 2、权限必须大于等于父类的权限 指public和private
继承中构造方法的执行循序 在有子父类继承关系的类中,创建子类的对象,调用子类的构造方法 如果子类的构造方法的第一行代码没有调用父类的构造方法,则会默认的调用父类的无参构造 肯定会执行父类的构造,因为要先给父类的 成员变量初始化,子类可能会用到 我们可以使用super()在子类的构造方法的第一行调用父类的构造方法 this 和super的区别 this 当前对象的引用 super 子类对象的父类引用 this 调用子类的成员 super调用父类的成员 继承的优缺点 优点 提高了代码的复用性 和可维护性 缺点 增强了类的耦合性 类与类的关系 开发的原则是 高内聚,低耦合 内聚:自身完成某件事的能力 匿名对象 new Student(); 匿名对象 , 没有名字, 没有变量引用的对象 使用匿名对象的格式:
- 调用属性: new 类名().属性;
- 调用方法: new 类名().方法();
- 作为参数: student.eat(new Food("苹果"));
匿名对象的应用场景 当方法只调用一次的时候可以使用匿名对象 注意:当匿名对象进行赋值时是没有意义的 可以当作参数进行传递,但无法参与传递之前的 final 修饰符 修饰成员 可以用于修饰类 修饰的类不能被继承 修饰的方法不能被被重写 修饰的变量是不能被修改的 是常量 自定义常量 被final 修饰的成员变量,一旦初始化则不能不可改变 注意: 自定义常量命名规则, 抽象类 abstract 修饰方法和类 抽象方法:不同类的方法是相似的,但具体的内容有不太一样, 抽象类:有抽象方法的类必须是抽象类 注意:一个类继承了抽象类需要重写他所有的抽象方法,否则这个类就得是抽象类 抽象方法直接 public abstractvoideat() 一个子类继承了抽象父类,将该子类改为抽象类 ,重写一下方法
抽象类的成员特点 成员变量: 可以有成员变量 可以有常量 成员方法: 可以有抽象方法 和非抽象方法 构造方法 可以有构造方法 不能创建对象,为成员变量初始化 abstract 抽象类不能创建抽象类对象,其方法体内可能为空 接口: 用于处理继承单一的局限性 是一个比抽象类还抽象的类,接口里所有的方法是抽象方法,接口和类的关系是实现 interface 格式 : interface 接口名{ } 接口的成员特点 接口只能有抽象方法 1、implements 实现的关键字 子类名后面加implemrnts加父类名 2、只能有常量 是抽象方法 不能赋值只能是常量 3、默认使用public 和abstract 修饰 只能使用public和abstarct修饰方法 4、默认使用public static final 来修饰成员常量 自定义常量 全是大写,用下划线隔开 注意:接口不能创建对象 接口和类的关系 类与接口的关系是实现关系,一个类实现一个接口必须实现它所有的方法 类与类: 继承关系,单一继承,多层继承 类与接口:实现关系 多实现 接口与接口的关系 :继承关系,多继承 先继承后实现 接口的优点: 1、类与接口的关系实现关系,而且是多实现,一个类可以实现多个接口 类与类之间是继承关系,java中是单一继承,一个类只能继承一个父类 打破了继承的局限性 2、对外提供了规则(USB接口) 3、降低了程序的耦合性 可以实现模块化开发,定义好规则,每个人完成各自的模块,提高了开发的效率 接口和抽象类的区别 抽取共性 共性:不断的抽取,抽取出抽象的概念 区别:与类的关系 类与接口的关系是实现,而且是多实现,一个类可以实现多个接口 类与抽象类是继承关系 区别2 成员 成员变量: 抽象类可以有成员变量,也可以有常量 接口只能有常量 成员方法: 抽象类可以有抽象方法,也可以有非抽象方法 让子类去继承 接口只有抽象方法,而且方法有默认修饰符,public abstract 构造方法: 抽象类有构造方法的,用于初始化成员,但不能创建对象 接口没有构造方法 也不能创建对象因为成员变量不需要初始化 分析过程: 由下至上,不断的向上抽取抽取子类的共性 实现: 由上至下,先实现共性 实现父类的共性 使用: 使用具体的子类’ person 是一个类,player和coach是继承,同时是抽象类,对应的是抽象方法 乒乓球运动员和篮球运动员是继承player继承抽象类就要重写方法 兵乓球教练员和篮球教练员是继承coach 然后定义一个接口学习英语 并实现接口 测试类:测试篮球运动员和乒乓球教练员 多态的前提 子父类的继承关系 方法的重写 父类引用 animal a 指向 = 子类对象 new cat(); 或者父接口 动态绑定:在运行期间 调用的方法 是根据其具体的类型 在编译期间 多态的成员特点 左边是指在父类中有没有定义这个方法 ,右边是子类重写以后的方法 成员变量:编译时看的是左边,运行是看的左边 成员方法:编译时看的是左边,运行时看的是右边 静态方法: 编译时看的是左边,运行时看的是左边 使用变量去调用静态方法,相当于用变量类型的类名去调用 编译时看的是左边,运行时成员方法看的是右边,其他的是看的左边 多态中向上转型和向下转型 向上转型:由小到大子类转化为父类 向下转型:由大到小父类转化为子类 animal a =new dog(); a.eat(); dog d =(dog)a; d.swim(); 调用某个子类的特有方法就赋值给某个子类再强转成父类 多态的优缺点 缺点:无法直接访问子类特有的成员 优点: 提高代码的可维护性和可扩转性
|