继承与多态

类的定义

  1. 先定义变量
  2. 后定义方法
    1. 公有方法
    2. 保护方法
    3. 私有方法
    4. getter/setter方法

继承

就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。

class 父类 {
     ...      
}
class 子类 extends 父类 {
     ...      
}

继承后的特点

  • 成员变量
  • 成员方法
  • 构造方法

super与this

  • super :代表父类的存储空间标识(可以理解为父亲的引用)。
  • this :代表当前对象的引用(谁调用就代表谁)。

子类默认的空构造方法默认调用super(), 也就是父类的默认构造函数, 如果父类没有无参构造函数, 则编译会出错. 这个时候需要手动调用父类的构造函数()

class Father{
    public Father(int i) {}
}
class Son extends Father{
    public Son(){ super(1); }
}

如果用this()或者super() 调用构造器, 则必须在构造函数内的第一行调用(必须保证父类在子类之前初始化)

特点

  • 单继承
  • 多层继承

抽象类

  • 抽象方法 : 没有方法体的方法。
  • 抽象类:包含抽象方法的类。
public abstract class Animal {
         public abstract void run()}

接口

接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)

public interface 接口名称 {
         // 抽象方法
         // 默认方法
         // 静态方法
         // 私有方法 

}

class 类名 implements 接口名 {
         // 重写接口中抽象方法【必须
         // 重写接口中默认方法【可选】    

}

默认方法

public interface LiveAble {
         public default void fly(){
                  System.out.println("天上飞");     
          } 
}

静态方法

public interface LiveAble {
         public static void run(){
                  System.out.println("跑起来~~~");     
          } 
}

私有方法

  • 私有方法:只有默认方法可以调用。
  • 私有静态方法:默认方法和静态方法可以调用。

多实现

class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {
         // 重写接口中抽象方法【必须】
         // 重写接口中默认方法【不重名时可选】    
}
  • 如果默认方法有重名的,必须重写一次。

抽象类与接口

抽象类是is-a关系, 是模板式设计 接口是 can-do关系, 是契约式设计

优先定义接口, 避免直接使用继承

多态

父类类型 变量名 = new 子类对象; 
变量名.方法名();

多态的好处

final关键字

  • 修饰类
  • 修饰方法
  • 修饰局部变量
  • 修饰成员变量

访问权限控制

屏幕截图 2020-09-15 102905

  • 不允许从外部创建对象时 使用private修饰构造方法
  • 工具类不允许有public 或 default 构造器
  • 成员变量非static 需要与子类共享 必须为protected
  • 成员变量非static 仅在内部使用 使用private
  • static成员变量 仅在内部使用 使用 private
  • 定义static成员变量时 考虑加final修饰
  • 成员方法 仅在内部使用 使用private
  • 成员方法仅对继承类公开 使用 protected

results matching " "

No results matching " "

results matching " "

No results matching " "