继承详细讲解

简介: 继承详细讲解

继承:

不能被继承的父类成员:

1.私有成员

2.子类与父类不在同包使用默认访问权限的成员

3.构造方法

访问修饰符protected可以修饰属性和方法、本类、同包、子类可以访问

方法重写:

重写方法和被重写方法必须具有相同的方法名和参数列表

重写方法的返回值类型必须和被重写的方法的返回值类型相同或是其子类

重写方法不能缩小被重写方法的访问权限

overriding:在子集中,根据需求对父级继承的方法进行重新编写,以实现子类需求

先属性后方法

super关键字:

使用super关键字super调用父类公共属性及方法 
public class AppleTree extends Crop {
            //… … 省略private属性定义
            public AppleTree(String brand) {
                //super(参数)在子类构造方法中调用且必须是第一句
                super("苹果树",1,0, 2,100);  //访问直接父类的构造方法
                this.brand = brand;
            }
        }
语法:super.<父类属性/父类方法>;

1.super只能出现在子类的方法和构造方法中 2.super调用构造方法时,只能是第一句 3.super不能访问父类的private成员

继承中的构造方法:

构造方法中不允许同时出现this和super语句调用构造方法

构造方法:不能被继承,因此不能重写
简述方法重写的规则

1.方法名相同

public void fangfa(){
    System.out.println("父类方法")
}
public void fangfa(){
    System.out.println("子类重写方法");
}

2.参数列表相同

public void fangfa(Sting name){
    System.out.println("父类方法")
}
public void fangfa(Sting name){
    System.out.println("子类重写方法");
}

3.返回值类型相同或者是其子类

public Object fangfa(Sting name){
    System.out.println("父类方法")
}
public volatile fangfa(Sting name){
    System.out.println("子类重写方法");
}

4.访问权限不能严于父类

Object fangfa(Sting name){
    System.out.println("父类方法")
}
public volatile fangfa(Sting name){
    System.out.println("子类重写方法");
}
Java 虚拟机按照先父类后子类的顺序执行一系列的构造方法

父类属性 →父类构造方法→子类属性→子类构造方法

访问修饰符   本类   同包      子类     其他

Private        可用   不可用   不可用   不可用

默认修饰符    可用   可用     不可用   不可用

Protect        可用   可用     可用     不可用

Public         可用   可用     可用     可用

两种   全局变量和局部变量  

全局变量所有方法可用

局部变量  声明的方法内可用

静态-方法区(类)

全集变量(变量)-堆(对象)

局部变量-栈(方法)

方法里,不可以定义static变量,即:类变量不能是局部变量

常量,不能重新赋值,必须在声明时赋值

静态代码中不允许使用全局变量

静态方法(类方法):使用static关键字修饰的方法

实例方法:未使用static关键字修饰的方法

使用Static修饰与非private修饰的类成员有何不同?

Static、非private修饰

非Static、private修饰

属性

类属性、类变量

实例属性、实例变量

方法

类方法

实例方法

调用方法

类名.属性

类名.方法()

对象.属性

对象.方法()

对象.属性

对象.方法()

归属

单个对象

Class       类

Object     对象

Stsic       静态

Final       最终的

Private     私有的

Public      公共的

Protect     保护

Extend      继承

Super       超越

Override     重写

Constructor   构造

Overload     重载

Abstract      抽象

Main        主要的

Instance      实例

Method      方法

相关文章
|
8月前
|
Java 编译器 程序员
关于继承是怎么样的?那当然是很好理解之
关于继承是怎么样的?那当然是很好理解之
43 1
|
8月前
|
安全 编译器 程序员
【C++】—— 继承
【C++】—— 继承
|
4月前
|
Java 编译器
继承详解13
继承详解13
38 0
|
2月前
|
编译器 C++ 开发者
【C++】继承
C++中的继承是面向对象编程的核心特性之一,允许派生类继承基类的属性和方法,实现代码复用和类的层次结构。继承有三种类型:公有、私有和受保护继承,每种类型决定了派生类如何访问基类成员。此外,继承还涉及构造函数、析构函数、拷贝构造函数和赋值运算符的调用规则,以及解决多继承带来的二义性和数据冗余问题的虚拟继承。在设计类时,应谨慎选择继承和组合,以降低耦合度并提高代码的可维护性。
37 1
【C++】继承
|
2月前
继承
1、使用关键字 extends进行继承,只允许多层继承,不允许多重继承,即一个子类只能继承一个父类,一个父类还可以有一个父类。 2、子类不能直接访问父类中的私有成员,可以调用父类的非私有方法 3、子类的实例化 1)先调用父类构造 2)再调用子类构造
20 0
|
7月前
|
程序员 编译器 C++
【c++】继承
【c++】继承
36 0
|
8月前
|
编译器 C++
【继承】初步了解C++继承
【继承】初步了解C++继承
|
Java 程序员 编译器
全面认识继承
全面认识继承
105 0
|
8月前
|
C++
C++之继承<2>【详解】
C++之继承<2>【详解】
继承的相关知识总结
继承的相关知识总结
55 0

热门文章

最新文章