当前位置: 首页 > news >正文

建设部网站查资质6360推广官网

建设部网站查资质6,360推广官网,天津 企业网站建设,做网站付钱方式第一章:继承——代码复用的艺术 1.1 继承的基本概念 定义:继承是面向对象三大特性之一,允许子类继承父类的属性和方法,并可以扩展或修改父类的功能。 核心术语: 父类(超类):被继…

第一章:继承——代码复用的艺术

1.1 继承的基本概念

定义:继承是面向对象三大特性之一,允许子类继承父类的属性和方法,并可以扩展或修改父类的功能。

核心术语

  • 父类(超类):被继承的类(如Animal)
  • 子类(派生类):继承的类(如Lion)
  • IS-A关系:子类是父类的一种特殊类型(狮子是动物)
1.2 继承的语法实现

基础语法

class 子类 extends 父类 {// 新增属性和方法// 重写父类方法
}

完整示例

// 父类:交通工具
class Vehicle {String brand;int maxSpeed;void start() {System.out.println(brand + "启动,最大速度" + maxSpeed + "km/h");}
}// 子类:汽车
class Car extends Vehicle {int seats; // 新增属性void openSunroof() { // 新增方法System.out.println("打开天窗");}
}public class Main {public static void main(String[] args) {Car myCar = new Car();myCar.brand = "奥迪";myCar.maxSpeed = 220;myCar.seats = 5;myCar.start();      // 调用继承方法myCar.openSunroof(); // 调用子类方法}
}

 1.3 继承的内存原理

堆内存示意图:
+-------------------+
| Vehicle实例        |
| brand="奥迪"       |
| maxSpeed=220       |
+-------------------+↑| 通过extends继承|
+-------------------+
| Car实例            |
| seats=5           |
+-------------------+
  • 子类对象包含父类的所有字段
  • 子类可以访问父类的非私有成员(需注意访问权限)

第二章:方法重写(Override)——赋予子类个性

2.1 方法重写的意义

问题引入:父类的通用方法无法满足子类特殊需求

class Bird {void fly() {System.out.println("鸟儿飞翔");}
}class Penguin extends Bird {// 企鹅不会飞,需要修改fly()行为
}
2.2 重写的语法规则
class Penguin extends Bird {@Overridevoid fly() {System.out.println("企鹅不会飞,只能摇摆行走");}
}

重写规则

  1. 方法名和参数列表必须完全相同
  2. 返回类型可以是父类返回类型的子类(协变返回类型)
  3. 访问权限不能比父类更严格(public > protected > default > private)
  4. 不能重写privatefinalstatic方法
2.3 @Override注解的重要性
  • 编译器检查是否符合重写规则
  • 提高代码可读性
  • 避免意外重载(参数写错导致新方法)

错误示例

class Parent {void show(int a) { ... }
}class Child extends Parent {@Overridevoid show(String a) { ... } // 编译错误:没有找到可重写的方法
}

第三章:super关键字——与父类沟通的桥梁

3.1 访问父类成员

场景:当子类与父类有同名成员时

class Animal {String name = "动物";
}class Cat extends Animal {String name = "猫咪";void printNames() {System.out.println(super.name); // 动物System.out.println(this.name);  // 猫咪}
}

示例

class Person {String name;public Person(String name) {this.name = name;}
}class Student extends Person {String major;public Student(String name, String major) {super(name); // 必须首先调用父类构造this.major = major;}
}

默认构造方法问题

class A {public A(int x) { ... }
}class B extends A {// 错误:没有默认构造可用public B() { // 隐式super()会失败,因为A没有无参构造}
}

第四章:多态——同一接口,多种实现

4.1 多态的三要素
  1. 继承:存在继承关系的类体系
  2. 重写:子类重写父类方法
  3. 向上转型:父类引用指向子类对象
4.2 多态的基本使用
Animal animal = new Lion(); // 向上转型
animal.eat(); // 实际调用Lion的eat()
栈内存           堆内存
+----------+     +-----------------+
| animal   | --> | Lion实例        |
+----------+     | Animal部分      ||   name, age     || Lion特有属性     |+-----------------+
4.3 多态的优势
  1. 代码扩展性:新增子类不影响原有代码
  2. 统一接口:用父类类型管理不同子类对象
  3. 降低耦合:调用方无需知道具体子类类型

动物园管理示例

Animal[] animals = new Animal[3];
animals[0] = new Lion();
animals[1] = new Penguin();
animals[2] = new Elephant();for (Animal a : animals) {a.eat(); // 每个动物执行自己的eat()
}

第五章:动态绑定——多态的实现原理

5.1 方法调用的两种方式
  • 静态绑定:编译时确定方法(如private、final、static方法)
  • 动态绑定:运行时根据对象类型确定方法
5.2 动态绑定示例
class Parent {void show() { System.out.println("Parent"); }
}class Child extends Parent {@Overridevoid show() { System.out.println("Child"); }
}public class Test {public static void main(String[] args) {Parent obj = new Child();obj.show(); // 输出Child(运行时决定)}
}

字节码分析

aload_1          // 加载obj到操作数栈
invokevirtual #4 // 调用虚方法(动态查找实际方法)

第六章:抽象类与接口——多态的进阶形态

6.1 抽象类(Abstract Class)

使用场景:定义通用模板,强制子类实现特定方法

示例

abstract class Shape {abstract double area(); // 抽象方法abstract double perimeter();void printInfo() {      // 具体方法System.out.println("面积:" + area());}
}class Circle extends Shape {double radius;@Overridedouble area() { return Math.PI * radius * radius; }@Overridedouble perimeter() { return 2 * Math.PI * radius; }
}
6.2 接口(Interface)

核心特性

  • 完全抽象(Java 8前)
  • 多继承实现
  • 定义行为规范

示例

interface Flyable {void fly();
}interface Swimmable {void swim();
}class Duck implements Flyable, Swimmable {@Overridepublic void fly() { System.out.println("鸭子飞翔"); }@Overridepublic void swim() { System.out.println("鸭子游泳"); }
}
6.3 接口的现代用法(Java 8+)
interface Logger {// 默认方法default void log(String message) {System.out.println("[INFO] " + message);}// 静态方法static void debug(String msg) {System.out.println("[DEBUG] " + msg);}
}

第七章:类型转换与instanceof——安全的多态操作

7.1 向下转型的风险
Animal animal = new Lion();
Lion lion = (Lion) animal; // 正确
Penguin penguin = (Penguin) animal; // 运行时错误:ClassCastException
7.2 instanceof操作符
if (animal instanceof Lion) {Lion lion = (Lion) animal;lion.run();
} else if (animal instanceof Penguin) {Penguin p = (Penguin) animal;p.swim();
}
7.3 模式匹配(Java 16+)
if (animal instanceof Lion lion) {lion.run(); // 直接使用lion变量
}

第八章:综合案例——电商支付系统设计

8.1 需求分析
  • 支持多种支付方式(支付宝、微信、信用卡)
  • 统一支付接口
  • 方便扩展新支付方式
8.2 类图设计
<<interface>>
Payable
+ pay(double amount): boolean▲| 实现|
+-------+-------+-------+
|       |       |       |
Alipay WeChatPay CreditCard
8.3 代码实现
interface Payable {boolean pay(double amount);
}class Alipay implements Payable {@Overridepublic boolean pay(double amount) {System.out.println("支付宝支付:" + amount);return true;}
}class PaymentProcessor {public void processOrder(Payable payment, double amount) {if (payment.pay(amount)) {System.out.println("支付成功");}}
}public class Main {public static void main(String[] args) {PaymentProcessor processor = new PaymentProcessor();processor.processOrder(new Alipay(), 100.0);processor.processOrder(new WeChatPay(), 200.0);}
}

第九章:常见问题与解决方案

9.1 构造方法继承问题

错误:子类忘记调用父类构造方法

class Parent {public Parent(int x) { ... }
}class Child extends Parent {// 编译错误:没有合适的父类构造
}

解决:显式调用父类构造

class Child extends Parent {public Child() {super(0); // 明确调用}
}
9.2 过度继承问题

反例

Animal▲|
Mammal▲|
Dog▲|
GoldenRetriever

改进:优先使用组合

class Dog {private Breed breed; // 品种作为独立类
}
9.3 多态中的属性访问
class Parent { int x = 1; }
class Child extends Parent { int x = 2; }Parent obj = new Child();
System.out.println(obj.x); // 输出1(访问父类字段)

第十章:面向对象设计原则进阶

10.1 里氏替换原则(LSP)

定义:子类必须能够替换父类,且不影响程序正确性

违反示例

class Rectangle {void setWidth(int w) { ... }void setHeight(int h) { ... }
}class Square extends Rectangle {// 改变父类方法行为void setWidth(int w) { this.width = w;this.height = w; }
}
10.2 依赖倒置原则(DIP)

定义:高层模块不应该依赖低层模块,二者都应依赖抽象

实践

interface DataSource { ... }class Database implements DataSource { ... }
class FileSystem implements DataSource { ... }class ReportGenerator {private DataSource source;public ReportGenerator(DataSource src) {this.source = src;}
}

总结:

  1. 继承的语法与内存原理
  2. 方法重写的规则与实践
  3. 多态的实现机制与应用场景
  4. 抽象类与接口的异同
  5. 安全类型转换的方法
  6. 面向对象设计原则
http://www.cadmedia.cn/news/16582.html

相关文章:

  • 外贸网站建设seo中国产品网
  • 搭建租号网的网站查询友情链接
  • 建设银行代发工资网站外链吧官网
  • 三亚做网站的公司山东关键词网络推广
  • 做网站如何上传apk外贸推广营销公司
  • 专业的网站建设排名seo优化顾问服务
  • 北京网站建设工作室哪家好微信scrm系统
  • h5网站建设价格网络营销五种方法
  • 如何做一个个人网站广州seo推广优化
  • 有域名怎么建网站免费的网络推广渠道有哪些
  • 上海 餐饮网站建设网站建设策划书范文
  • 电脑商城网站模板网络销售真恶心
  • 如何对新开网站做收录做推广哪个平台效果好
  • 坤思特重庆网站建设熊掌号seo排名优化技巧
  • 长沙网站优化排名重庆好的seo平台
  • 装网要多少钱搜索引擎内部优化
  • 辽宁城乡建设部网站首页百度一下搜索网页
  • 湛江建设网官方网站阿里巴巴国际站
  • 广州网站建设网站推广个人网站制作
  • 自己做网站服务器360建站官网
  • 网站开发的时间流程站长工具seo排名查询
  • 企业画册设计欣赏网站优化排名方案
  • 商标注册代理itmc平台seo优化关键词个数
  • 濮阳河南网站建设网络营销案例成功案例
  • 室内设计公司免费网站百度推广优化排名
  • 河南高端建设网站软件推广是什么工作
  • 学校网站平台建设app网站推广平台
  • 周口网站建设专家关键词搜索工具爱站网
  • seo快速排名网站优化注册网站
  • 网站建设必须要服务器吗北京网络推广公司