1、继承
(1)父类和之类之间有继承关系。
(2)继承是面向对象编程的一个重要特征,它可降低程序的复杂性并使代码可重用。
2、父类和子类之间需要考虑方面
(1)子类只能继承父类的非私有成员。(private修饰的都不能被子类继承)
(2)属性隐藏,方法覆盖。
(1)四种访问权限
1、public、protected、default、private。访问权限逐渐变小。
2、public表示公共的,可以被任何其他类或对象所访问;protected表示受保护的,只能被相同包或其子类中的类或对象所访问;default表示默认的,只能在同一个包内被访问;private表示私有的,在定义该成员的类内部才能被访问。
(2)子类重写父类的方法需要遵循以下规则
1.方法名和形参列表相同。
2.子类方法返回值类型应比父类方法返回值类型更小或相等。
3.子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。
4.子类方法的访问权限应比父类方法的访问权限更大或相等。
5.覆盖方法和被覆盖方法要么都是类方法,要么都是实例,不能一个是类方法,另一个是实例方法。
(3)子类构造方法和父类构造方法
1、在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过。如果子类没有显式调用父类的构造方法,默认调用父类的无参构造方法;
(4)类中的函数重载的三个条件
1、函数名称要相同。(*)
2、参数列表不同(参数类型不同或个数不同或者顺序不同)。(*)
3、函数的返回类型不能作为重载的判断的条件(可以相同也可以不同)。
(5)抽象类-用abstract修饰的类是抽象类
1、不能实例化,就是说不能创建对象,常作为父类让子类继承。
2、有抽象方法,也有非抽象方法。抽象方法没有方法体,抽象方法子类必须重写。
3、抽象类中有构造函数。子类创建对象时会调用。
3、补充知识
1、static和final
(1)static修饰的方法:
1、父类中的静态方法可以被继承、但不能被子类重写。
2、如果在子类中写一个和父类中一样的静态方法,那么该静态方法由该子类特有,两者不构成重写关系。
(2)final修饰:
1、修饰类时表示不允许被继承。(最终类)
2、修饰方法时表示不允许被子类重写,但是可以被子类继承,不能修饰构造方法。
2、当子父类定义了同名的静态方法
(1)用谁的对象调用那么执行的就是谁的方法(父类对象调用父类的静态方法,子类对象调用子类的静态方法)
(2)用类名调用方法(父类调用父类的静态方法,子类调用子类的静态方法)
(3)多态实现(实例方法看右边,类方法看左边)
如果子类重写了父类的方法,那么当我们用父类引用指向子类的对象时,父类的对象调用的是子类重写后的方法。可是,当你用static修饰了该同名方法之后,你再用父类对象调用时使用的是父类的方法,而非重写后的。
提示:如果你有什么疑问,也可以私聊我,给我留言,我会尽力回复。如果我写的内容存在问题,也非常欢迎你的指正。