Siêu lớp python và lớp con

Trong các bài học trước, bạn đã nhiều lần thấy thừa kế được đề cập. Trong ngôn ngữ Java, các lớp có thể được dẫn xuất từ ​​các lớp khác, do đó kế thừa các trường và phương thức từ các lớp đó

Định nghĩa. Lớp dẫn xuất từ ​​lớp khác được gọi là lớp con [cũng là lớp dẫn xuất, lớp mở rộng hoặc lớp con]. Lớp mà từ đó lớp con được dẫn xuất được gọi là lớp cha [cũng là lớp cơ sở hoặc lớp cha]

Ngoại trừ

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7, không có siêu lớp, mỗi lớp có một và chỉ một siêu lớp trực tiếp [kế thừa đơn]. Trong trường hợp không có bất kỳ siêu lớp rõ ràng nào khác, mọi lớp hoàn toàn là một lớp con của
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7

Các lớp có thể được dẫn xuất từ ​​các lớp được dẫn xuất từ ​​các lớp được dẫn xuất từ ​​các lớp, v.v. và cuối cùng được dẫn xuất từ ​​lớp trên cùng,

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7. Một lớp như vậy được cho là có nguồn gốc từ tất cả các lớp trong chuỗi thừa kế kéo dài từ
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7

Ý tưởng thừa kế đơn giản nhưng mạnh mẽ. Khi bạn muốn tạo một lớp mới và đã có một lớp bao gồm một số mã mà bạn muốn, bạn có thể lấy lớp mới của mình từ lớp hiện có. Khi thực hiện điều này, bạn có thể sử dụng lại các trường và phương thức của lớp hiện có mà không cần phải viết [và gỡ lỗi. ] bản thân họ

Một lớp con kế thừa tất cả các thành viên [trường, phương thức và lớp lồng nhau] từ lớp cha của nó. Các hàm tạo không phải là thành viên, vì vậy chúng không được kế thừa bởi các lớp con, nhưng hàm tạo của lớp cha có thể được gọi từ lớp con

Hệ thống phân cấp lớp nền tảng Java

Lớp

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7, được định nghĩa trong gói
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
2, định nghĩa và triển khai hành vi chung cho tất cả các lớp—bao gồm cả những lớp mà bạn viết. Trong nền tảng Java, nhiều lớp dẫn xuất trực tiếp từ
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7, các lớp khác dẫn xuất từ ​​một số lớp đó, v.v., tạo thành một hệ thống phân cấp các lớp

Tất cả các Lớp trong Nền tảng Java đều là Hậu duệ của Đối tượng

Ở đầu phân cấp,

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7 là lớp tổng quát nhất trong tất cả các lớp. Các lớp gần dưới cùng của hệ thống phân cấp cung cấp hành vi chuyên biệt hơn

Một ví dụ về kế thừa

Đây là mã mẫu để có thể triển khai lớp

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 đã được trình bày trong bài học Lớp và đối tượng

public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}

Khai báo lớp cho lớp

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 là lớp con của lớp
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 có thể trông như thế này

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 kế thừa tất cả các trường và phương thức của
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 và thêm trường
public MountainBike myBike = new MountainBike[];
0 và một phương thức để thiết lập trường đó. Ngoại trừ hàm tạo, nó giống như bạn đã viết hoàn toàn một lớp
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 mới từ đầu, với bốn trường và năm phương thức. Tuy nhiên, bạn không phải làm tất cả công việc. Điều này sẽ đặc biệt có giá trị nếu các phương thức trong lớp
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 phức tạp và mất nhiều thời gian để gỡ lỗi

Bạn có thể làm gì trong một lớp con

Một lớp con kế thừa tất cả các thành viên công khai và được bảo vệ của lớp cha của nó, bất kể lớp con đó nằm trong gói nào. Nếu lớp con nằm trong cùng gói với lớp cha của nó, thì nó cũng kế thừa các thành viên gói-riêng của lớp cha. Bạn có thể sử dụng nguyên trạng các thành viên kế thừa, thay thế, ẩn chúng hoặc bổ sung chúng bằng các thành viên mới

  • Các trường kế thừa có thể được sử dụng trực tiếp, giống như bất kỳ trường nào khác
  • Bạn có thể khai báo một trường trong lớp con có cùng tên với trường trong lớp cha, do đó ẩn nó đi [không nên dùng]
  • Bạn có thể khai báo các trường mới trong lớp con không có trong lớp cha
  • Các phương thức được kế thừa có thể được sử dụng trực tiếp vì chúng là
  • Bạn có thể viết một phương thức thể hiện mới trong lớp con có cùng chữ ký với phương thức trong lớp cha, do đó sẽ ghi đè lên nó
  • Bạn có thể viết một phương thức tĩnh mới trong lớp con có cùng chữ ký với phương thức trong lớp cha, do đó ẩn nó đi
  • Bạn có thể khai báo các phương thức mới trong lớp con không có trong lớp cha
  • Bạn có thể viết một hàm tạo của lớp con gọi hàm tạo của lớp cha, hoàn toàn hoặc bằng cách sử dụng từ khóa
    public MountainBike myBike = new MountainBike[];
    
    3

Các phần tiếp theo trong bài học này sẽ mở rộng về các chủ đề này

Các thành viên riêng trong một Superclass

Một lớp con không kế thừa các thành viên

public MountainBike myBike = new MountainBike[];
4 của lớp cha của nó. Tuy nhiên, nếu lớp cha có các phương thức công khai hoặc được bảo vệ để truy cập các trường riêng của nó, thì lớp con cũng có thể sử dụng các phương thức này.

Một lớp lồng nhau có quyền truy cập vào tất cả các thành viên riêng của lớp kèm theo của nó—cả trường và phương thức. Do đó, một lớp lồng công khai hoặc được bảo vệ được kế thừa bởi một lớp con có quyền truy cập gián tiếp vào tất cả các thành viên riêng của lớp cha

Đúc đối tượng

Chúng ta đã thấy rằng một đối tượng thuộc kiểu dữ liệu của lớp mà nó được khởi tạo. Ví dụ, nếu chúng ta viết

________số 8

thì

public MountainBike myBike = new MountainBike[];
5 thuộc loại
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 là hậu duệ của
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 và
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7. Vì vậy, một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 và cũng là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7, và nó có thể được sử dụng bất cứ nơi nào đối tượng
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 hoặc
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7 được gọi cho

Điều ngược lại không nhất thiết đúng. một

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 có thể là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6, nhưng không nhất thiết. Tương tự, một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7 có thể là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5 hoặc một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6, nhưng không nhất thiết phải là

Truyền cho thấy việc sử dụng một đối tượng thuộc loại này thay cho loại khác, trong số các đối tượng được phép thừa kế và triển khai. Ví dụ, nếu chúng ta viết

public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
5

thì

public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
60 vừa là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
7 vừa là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 [cho đến khi
public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
60 được gán một đối tượng khác không phải là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6]. Điều này được gọi là đúc ngầm

Mặt khác, nếu chúng ta viết

public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
6

chúng tôi sẽ gặp lỗi thời gian biên dịch vì trình biên dịch không biết

public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
60 là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6. Tuy nhiên, chúng tôi có thể nói với trình biên dịch rằng chúng tôi hứa sẽ gán một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 cho
public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
60 bằng cách ép kiểu rõ ràng

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
5

Diễn viên này chèn một kiểm tra thời gian chạy rằng

public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
60 được gán một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 để trình biên dịch có thể giả định một cách an toàn rằng
public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
60 là một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6. Nếu
public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
60 không phải là
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 trong thời gian chạy, một ngoại lệ sẽ được đưa ra

Ghi chú. Bạn có thể thực hiện kiểm tra logic đối với loại đối tượng cụ thể bằng cách sử dụng toán tử

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
55. Điều này có thể cứu bạn khỏi lỗi thời gian chạy do truyền không đúng cách. Ví dụ

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
3

Ở đây, toán tử

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
55 xác minh rằng
public class Bicycle {
        
    // the Bicycle class has three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has one constructor
    public Bicycle[int startCadence, int startSpeed, int startGear] {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has four methods
    public void setCadence[int newValue] {
        cadence = newValue;
    }
        
    public void setGear[int newValue] {
        gear = newValue;
    }
        
    public void applyBrake[int decrement] {
        speed -= decrement;
    }
        
    public void speedUp[int increment] {
        speed += increment;
    }
        
}
60 đề cập đến một
public class MountainBike extends Bicycle {
        
    // the MountainBike subclass adds one field
    public int seatHeight;

    // the MountainBike subclass has one constructor
    public MountainBike[int startHeight,
                        int startCadence,
                        int startSpeed,
                        int startGear] {
        super[startCadence, startSpeed, startGear];
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass adds one method
    public void setHeight[int newValue] {
        seatHeight = newValue;
    }   
}
6 để chúng tôi có thể tạo kiểu với kiến ​​thức rằng sẽ không có ngoại lệ thời gian chạy nào bị ném

Chủ Đề