方法重载 继承 多态 构造方法

方法重载

在同一个类中定义多个方法,方法的功能类似,只是方法内参数不同,但是方法名相同。

class Hello {
    public void hello() {
        System.out.println("Hello, world!");
    }

    public void hello(String name) {
        System.out.println("Hello, " + name + "!");
    }
 }

继承

继承有个特点,就是子类无法访问父类的private字段或者private方法。例如,Student类就无法访问Person类的name和age字段:

class Student extends Person {
    // 不要重复Person类已有的字段/方法,
    // 只需要定义新增score字段/方法:
    private int score;

    public int getScore() { … }
    public void setScore(int score) { … }
}
  • toString():把instance输出为String;
  • equals():判断两个instance是否逻辑相等;
  • hashCode():计算一个instance的哈希值。

如果父类中的某一个方法不允许被子类重写,可以把该方法标记为final。同样用final修饰的类也不可以被继承。

class Person {
    public final String name;
    public Person(String name) {
        this.name = name;
    }
}

在构造方法中初始化final字段,保证实例一旦被创建就不可以被修改。

  1.private 表示私有,只有自己类能访问

  2. default表示没有修饰符修饰,只有同一个包的类能访问

  3. protected表示可以被同一个包的类以及其他包中的子类访问

  4. public表示可以被该项目的所有包中的所有类访问

一般父类中定义的变量用protected 这样可以被子类访问

多态 Polymorphic

overload 重载
override 重写

如果方法签名不同,就是Overload,Overload方法是一个新方法;如果方法签名相同,并且返回值也相同,就是Override。

方法名相同,方法参数相同,但方法返回值不同,也是不同的方法。在Java程序中,出现这种情况,编译器会报错。

多态的特性就是,运行期才能动态决定调用的子类方法。对某个类型调用某个方法,执行的实际方法可能是某个子类的覆写方法。

构造方法

构造方法目的是:规定在默认的位置输入固定类型的值

构造方法与set()和get() 两者的区别就在于:

  • 构造方法主要用于:定义一种规则,初始化值

  • setXXX()与getXXX()主要用于:修改值,获取值

如果父类没有默认的构造方法,子类就必须显式调用super()并给出参数以便让编译器定位到父类的一个合适的构造方法。

子类不会自动继承父类的构造方法

阻止继承

正常情况下,只要某个class没有final修饰符,那么任何类都可以从该class继承。

从Java 15开始,允许使用sealed修饰class,并通过permits明确写出能够从该class继承的子类名称。

向上转型

如果Student是从Person继承下来的,那么,一个引用类型为Person的变量,能指向Student类型的实例

Person p = new Student();

向下转型

为了避免向下转型出错,Java提供了instanceof操作符,可以先判断一个实例究竟是不是某种类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值