Java 상속을 배우기 전에 Java 객체지향에 특별한 주의가 필요한 몇 가지 핵심 사항을 기억하고 싶습니다.
객체 지향은 캡슐화를 통해 코드를 더 재사용 가능하고 안전하게 만듭니다. 일반적으로 우리는 객체 지향 방식으로 생각하고 사물이나 행동을 설명하는 방법을 배워야 합니다.
OOP를 사용하려면 세 가지 주요 특징을 알아야 합니다.
1. 객체의 동작: 객체에 적용할 수 있는 작업 또는 객체에 적용할 수 있는 메서드.
2. 개체 상태: 해당 작업이 적용될 때 개체가 반응하는 방식입니다.
3. 객체 식별: 동일한 동작과 상태를 가진 다양한 객체를 식별하는 방법.
동일한 클래스의 모든 객체 인스턴스는 동일한 동작을 지원하기 때문에 계열 유사성을 갖습니다. 객체의 동작은 호출 가능한 메서드에 의해 정의됩니다. 또한 각 개체는 현재 특성을 설명하는 정보를 유지합니다. 객체의 상태는 시간이 지남에 따라 변할 수 있지만 그 변화는 저절로 발생하지 않습니다. 객체에 대한 변경은 메소드를 호출하여 이루어져야 합니다.
1. 클래스 간의 관계
* 종속성("uses-a")
* 집계("has-a")
* 상속("is-a")
여기서 조금 설명하겠습니다. 매일 쇼핑하는 밤에서 이 세 가지 관계의 차이점을 간략하게 설명하겠습니다. 특정 보물을 주문하면 주문 처리 시스템에 일부 명사가 표시됩니다.
예: 품목, 주문, 배송 주소, 결제, 계정(계정) 등. 프로그래머는 이를 다른 클래스로 설정합니다.
종속성은 한 클래스가 다른 클래스의 객체를 조작하는 방법과 같습니다. 주문을 하면 Order 객체가 Account 객체의 신용 정보에 액세스해야 하므로 Order 클래스는 Account 클래스를 사용할 수 있습니다. (빅데이터나 은행신용대출을 생각하시면 됩니다)
Aggregation, aggregation은 클래스 A의 객체가 클래스 B의 객체를 포함한다는 뜻입니다. Order 객체가 Item 객체를 포함해야 하는 것과 같습니다.
상속은 RushOrder 클래스와 마찬가지로 Order 클래스에서 상속됩니다. 아래에서는 상속 관련 지식 포인트를 자세히 소개하겠습니다.
2. 상속에 대한 중요한 설명
내 생각에 상속이란 과감하게 변화를 수용하는 긍정적이고 낙관적인 태도를 구체적으로 구현하는 방법이다. 기존 클래스로부터 새로운 클래스를 생성하는 과정입니다. 상속에서 제품의 파생, 업그레이드, 확장을 확인할 수 있습니다.
1. 상속 구문
키워드 확장은 새 클래스가 기존 클래스에서 파생되었음을 나타냅니다. 이 기존 클래스를 상위 클래스라고 하며 파생 클래스를 하위 클래스라고 합니다.
예:
class A extends B { }//A类派生于B类
2.继承中的初始化顺序
简单来说,类的内部结构常见形态有四种:
1)属性(包括类属性和实例属性)
2)方法(包括类方法和实例方法)
3)构造器
4)初始化块(包括类的初始化块和实例的初始化块)
对于继承中的初始化顺序,可分为类的初始化和对象的初始化。
1)继承中类的初始化:(前提:父类中的属性和方法没有private修饰)
在JVM装在类的准备阶段,先为类的所有类属性和类初始化块分配内存空间。并在首次初始化阶段苏红为其进行初始化,类属性和类初始化块之间的定义时的顺序决定了其初始化的顺序。若存在父类,则首先初始化父类属性和类初始化块,一种上溯到Object类最先执行。
2)继承中对象初始化:(前提:父类中的属性和方法没有private修饰)
在new创建新对象时,首先对对象属性和初始化代码块分配内存,并执行默认的初始化。如果存在父类,则先搞好父类的。然后执行父类构造器中的初始化程序,接着才开始对子类的对象属性和初始化执行初始化。
3.继承中的隐藏
访问控制符的带来的访问权限,在上一篇的博客中我已经用表格的形式展示了。这里不再赘述。
当子类继承父类,子类可以继承父类中具有访问控制权限的属性和方法(不要被private修饰就可以了),对于用了private修饰的的父类所有的属性和方法,子类就继承不来了。
当子类需要改变继承过来的方法时,就需要用到重写方法了。一旦重写后,父类的方法对子类来说就表现为隐藏。你再想调用,就将调用重写后的子类当中的方法了。
当你重写了,还想调用父类,可以用两种方法:
1)将子类对象类型强制转换为父类类型,进行强调;
2)通过super.调用,注意它一定要被写到第一行。格式:super.method()
4.注意事项总结:
1)在子类构建对象时,先构建父类,再构建子类。
2)在方法调用的时候,永远永远永远是先在子类中找,子类中如果没有,再去父类中找。
代码示例:
1 public class JiC {2 public JiC() {3 System.out.println("我是父类");4 }5 6 public void method() {7 System.out.println("我是父类中的一个方法");8 }9 }
1 class B extends JiC { 2 public B() { 3 System.out.println("我是子类"); 4 } 5 6 public void method() { 7 System.out.println("我是子类中的一个方法"); 8 } 9 }10 11 public class JiC2 {12 public static void main(String[] aegs) {13 System.out.println("上面示例的打印结果是:");14 B b = new B();15 b.method();16 }17 }
위 내용은 자바 기초 - 상속의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!