qq空间网站根目录,定制网站建设成本,什么做网站的公司好,做网站的免费空间目录
一、继承
继承的定义#xff1a;
继承的基本用法#xff1a;
如何调用父类的方法#xff1f;
二、多态
多态性的好处
多态中的强制类型转换#xff1a; 包的命名规则——域名倒叙 一、继承
继承的定义#xff1a; 继承是面向对象编程中的一种机制#xff0c…目录
一、继承
继承的定义
继承的基本用法
如何调用父类的方法
二、多态
多态性的好处
多态中的强制类型转换 包的命名规则——域名倒叙 一、继承
继承的定义 继承是面向对象编程中的一种机制它允许一个类继承另一个类的属性和方法。通过这种方式子类可以复用基类的代码避免重复编写相同的代码。其中——父类又叫超类、基类。子类又叫派生类。
继承的基本用法
在Java中可以使用extends关键字来声明一个类继承另一个类
在这个例子中Dog类继承自Animal类因此Dog类的对象可以使用Animal类中的eat方法同时也可以调用Dog类自己定义的bark方法。
class Animal {void eat() {System.out.println(This animal eats food.);}
}class Dog extends Animal {void bark() {System.out.println(The dog barks.);}
}public class Main {public static void main(String[] args) {Dog myDog new Dog();myDog.eat(); // 继承自父类 AnimalmyDog.bark(); // 子类 Dog 的方法}
}
注意
继承有以下几个规则
子类只能继承父类中可访问的属性和方法。如果父类中的某个方法或属性被声明为private则子类无法直接访问它们。父类可以有很多个派生子类但一个子类只能有一个父类。区别于C能有多个父类。父类的对象一定先于子类生成先于子类被初始化被final修饰的类不可被继承被final修饰的方法不可以被重写。
如何调用父类的方法 继承父类的无参和有参函数和引用封装的过程相同就是默认调用同名中的无参函数当传参数时才会调用同名函数中有参的函数。
如果父类的构造器带有参数则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。 super关键字在Java等语言中用于引用当前对象的直接父类对象。通过使用super你可以在子类的方法中调用父类的同名方法、访问父类的成员变量如果它们不是私有的或者调用父类的构造函数。
在上面的例子中我们发现——当子类中的方法与父类中的方法重名时这通常被称为方法覆盖Override。在这种情况下子类的方法会隐藏或说覆盖父类中的同名方法。当你想在子类的方法中调用被覆盖的父类方法时需要使用super关键字。重名方法只使用最新版。
二、多态 多态是面向对象编程中的一个核心概念它指的是一个对象变量可以指向多种实际类型的现象即同一个事件发生在不同的对象上会产生不同的结果。
多态性的好处
提高了代码的复用性通过多态性可以使用父类类型的引用来操作子类对象从而实现了代码的复用。提高了代码的灵活性多态性允许在运行时动态地确定对象的类型从而可以根据需要调用不同的方法。这使得程序更加灵活和可扩展。简化了代码多态性允许使用统一的接口来操作不同的对象从而简化了代码。 示例 x先被赋予父类Person后才被依次指向Child1,Child2,Child3因此形成了一个多态。 我们会发现同样都是执行x.m1()方法因为作用在不同的对象上结果不一样。 注意
一个类的句柄可以指向自己类的对象或自己的子孙后代类的对象。反过来则不成立。 多态中的强制类型转换 向上转型Upcasting将子类对象转换为父类对象。这是安全的因为子类继承了父类的所有属性和方法。 Animal myDog new Dog(); // 向上转型安全
myDog.makeSound(); // 调用父类方法 向下转型Downcasting将父类对象转换为子类对象。这是不安全的因为不是所有的父类对象都是子类对象。如果尝试将一个不是子类实例的父类对象转换为子类会抛出ClassCastException。 Animal someAnimal new Animal(); // 创建一个Animal对象
Dog dog (Dog) someAnimal; // 尝试向下转型这里会抛出ClassCastException 同一个父类的多个派生类不允许互相转换 Dogs1(Cat) s2 //不允许