面向对象 ---- 包、访问权限、构造方法、static、方法重载、方法重写、

版权声明:如需转载或引用请声明原文网址 https://blog.csdn.net/u013087359/article/details/81009084

一.包package

1.概述

包类似于文件夹,避免同样类名冲突,方便管理文件。

2.定义包

//格式 : package 包名
//包名一般是域名的倒叙写法
package com.test;
public class MyClass {
}

3.注意事项

  • 定义包必须是java文件的可执行代码的第一行
  • 一个java文件中只能定义一个包
  • 如果没有定义包,则默认无包

4.导入包import

  • 使用不同包的类时,需要先导入包
  • 可以导入某个包中的指定类,也可以导入某个包中所有类(使用星号*)
  • 导入包语句可以出现多次
package com.test;

//在包声明和类声明之间导入包
import java.util.Scanner;
import java.math.*;

public class MyClass {
}

二.权限访问修饰符

修饰符 本类 同包所有类 不同包子类 不同包非子类
public
protected
默认
private

三.构造方法

1.概述

构造方法是类实例化创建对象时的入口,可用于属性初始化或其他操作。

2.特点

  • 方法名与类名一致
  • 没有返回值(无void、ruturn)

3.注意事项

  • 如果不显式声明构造方法,系统会默认提供一个无参构造方法。
  • 一旦显式声明了构造方法(构造方法可以重载),则系统不再提供无参构造方法。如需继续使用无参构造方法必须显式声明无参构造方法。
  • 子类构造方法第一句默认调用了父类无参构造方法。super();
  • 构造方法不能被重写,只能在子类使用super调用父类的构造方法
  • 如需在构造方法中显式调用另一个构造方法(重载构造方法或父类构造方法),则该调用命令必须是构造方法体的第一行代码(即只能显式调用一个构造方法)。
  • 如果在构造方法中调用一次本类的其他构造方法, 则还是先默认执行super();如果在构造方法中调用父类的构造方法,则不再默认执行super();

四.static

1.概述

静态是随着类的加载而加载,被类的所有对象(创建对象时才加载)共享。

2.特点

  • 静态的只能访问静态的,不能访问非静态的
  • 非静态能访问静态和非静态的

3.修饰

  • 属性
  • 方法
  • 类(static只能修饰内部类)
  • 代码块

4.调用

  • 使用对象名调用
  • 使用类名调用

五.方法重载

1.概述

方法重载指的是在同一个类中同方法名不同参数列表。

2.特点

  • 必须在同一个类中
  • 方法名必须相同
  • 参数列表不同
    • 参数个数 不同
    • 参数类型 顺序 不同(与参数名称无关)
  • 与访问修饰符和返回值无关

六.方法重写

1.概述

方法重写指的子类对父类的同名方法进行重写。

2.特点

  • 父子类关系
  • 方法名必须相同
  • 参数列表相同
  • 返回值类型相同或其子孙类、
  • 访问权限相同或更大
  • 抛出的异常相同或其子孙类

3.注意事项

  • 子类无法对父类的静态方法进行重写

    • 当父类方法是静态时,子类用非静态方法重写会出现编译错误
    • 当父类方法是静态时,子类也用静态方法尝试重写时,编译不报错,但是实际运行中没有达到重写效果(作用跟父类子类两个不同名方法一样,各不影响)
  • 多态是根据具体实现进行绑定(动态绑定);静态方法在编译时就已经绑定类(早期绑定),只属于该类,与具体实现无关,声明了什么类就调用相应类的静态方法(本来静态无需声明,可以直接引用)。所以即使符合了重写规则,但本质上没有重写(早期绑定优先于动态绑定),父子类的两个静态方法在多态中是各不相关的,相当于两个不同的方法。

猜你喜欢

转载自blog.csdn.net/u013087359/article/details/81009084