包装网站建设,网站建设.软件开发,和君设计专业网站建设公司,中企动力是做哪方面销售一、继承#xff08;Inheritance#xff09; 
1. 概述 
继承是面向对象编程的一种特性#xff0c;允许我们定义一个类#xff08;称为子类或派生类#xff09;以继承另一个类#xff08;称为超类或基类#xff09;的功能。 
2. 语法格式 
public class Zi extends Fu {/…一、继承Inheritance 
1. 概述 
继承是面向对象编程的一种特性允许我们定义一个类称为子类或派生类以继承另一个类称为超类或基类的功能。 
2. 语法格式 
public class Zi extends Fu {// 子类新增的属性和方法
}3. 继承的优点 
代码复用子类自动拥有父类的非私有成员变量和方法。层次结构清晰有助于构建和维护大型项目。 
4. 访问权限修饰符 
Java中有四种访问权限修饰符 
private仅在本类内可见。default即不写任何修饰符在同一包内可见。protected在同一包内及子类中可见。public在任何地方都可见。 
这些修饰符决定了成员变量的访问范围从严格到宽松依次为private  default  protected  public。 
5. 继承的特点 
单一继承每个子类只能有一个父类。多层继承可以通过多个层次进行继承。所有类默认继承自Object类。 
6. 方法重写Overriding 
当子类需要提供不同于父类的实现时可以使用Override注解来重写父类的方法。 
二、多态Polymorphism 
1. 概述 
多态是指在程序中同一个行为具有多种表现形式。它是面向对象程序设计的重要内容之一。 
2. 多态的表现形式 
主要有两种形式 
方法的多态通过重载overloading和重写override来实现。对象的多态通过向上转型upcasting和向下转型downcasting来实现。 
3. 向上转型 
将子类的引用赋值给父类的引用例如 
Person p  new Student();此时只能调用Person类中的方法不能调用Student特有的方法。 
4. 向下转型 
在某些情况下我们需要访问子类特有的方法和属性这时需要进行强制类型转换即向下转型 
if (p instanceof Student) {Student s  (Student)p; // 强制转换为Student类型s.study(); // 调用Student类特有的study方法
} else {System.out.println(p is not a Student);
}需要注意的是在进行向下转型之前必须确保对象确实是目标类型的实例否则会抛出ClassCastException异常。 
5. instanceof操作符 
用于判断一个对象是否属于某个特定类型或其子类型 
boolean result  p instanceof Student;返回值为true表示p是Student类型的实例否则为false。 
三、示例代码解析 
下面是一段演示继承和多态特性的简单Java程序 
public class Demo153 {public static void main(String[] args) {// 创建一个Student对象并向上转型为Person类型Person p  new Student();// 尝试调用Student特有的study方法但由于p被声明为Person类型// 所以编译时会报错因为Person类中没有定义study方法。// 为了解决这个问题我们可以使用instanceof操作符来判断p是否实际上是Student类型// 然后再进行强制类型转换。if (p instanceof Student) {((Student)p).study(); // 正确地调用了Student类的study方法} else {System.out.println(p is not a Student);}}
}class Person {public void run() {System.out.println(Person running...);}
}class Student extends Person {Overridepublic void study() {System.out.println(Student studying...);}
}在这个例子中我们首先创建了一个Student对象s并将其向上转型为一个Person类型的引用p。当我们试图直接通过p调用study()方法时由于p的类型是Person而不是Student所以编译器会报错。为了解决这个问题我们使用了instanceof操作符来检查p是否实际上是一个Student对象如果是的话我们就将其强制转换为Student类型然后就可以正常调用study()方法了。