JAVA面向对象继承与重写

本文详细讲解了Java面向对象中的访问权限修饰符(public, protected, default, private),继承机制及其应用,包括super关键字的使用,方法重写(override)的概念,以及final关键字的含义。重点阐述了代码复用和面向对象设计原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA面向对象3

一,访问权限修饰符

本类同包下的类子类所有类
public
protected
default
private

所有的访问权限修饰符都是成员修饰符,只能修饰成员,不能修饰局部(局部内容不能被外部访问)
能够修饰类的: public | default(默认的,省略)
如果想要使用父类中继承的,被protected修饰成员,需要在子类中通过继承关系使用

private修饰的内容只能在本类中使用

public class Person{
    private int privateField;
    int privateField; // default不能写
    protected int privateField;
    public int privateField;
}

二,extends继承

2.1 继承的作用

第一好处:继承的本质在于抽象。类是对对象的抽象,继承是对某一批类的抽象。

第二好处:为了提高代码的复用性。(事实上,利用组合可以更好的实现代码复用!)

extends 的意思是“扩展”。子类是父类的扩展。

派生类|子类 : 对象的抽象
超类|基类|父类 : 是对子类的抽象

  • 子类一旦继承父类,就有权使用父类中的成员
  • 子类是父类的延续(使用父类的内容)+扩展(定义子类独有的内容)

一个父类可以存在多个子类
单继承机制-> 一个子类只能存在一个父类

2.2 如何实现继承
public class TestExtends {
    public static void main(String[] args) {
        Dogs dog = new Dogs();
        dog.call();
        dog.eat();
    }
}
class Animal {
    String eyes="眼睛";
    String name="无名";
    	public void eat(){
    	System.out.println("动物吃东西!");
    }
}
class Dogs extends Animal {
    public void call(){
    	System.out.println("小狗汪汪叫!");
    }
}

面向对象的设计原则之一: 开闭原则
为修改关闭,对扩展开放

三,Super关键字

super是直接父类对象的引用。可以通过 super 来访问父类中被子类覆盖的方法或属性。

1.在子类构造器的首行,调用父类中的构造器

2.区分子父类中同名成员问题

  • 在子类中使用super指代子类内存空间中的父类对象
  • 默认就近原则
  • 通过super.调用父类成员
class Fu{
    String name = "fu";
    int a = 1;

    public Fu(){
        
    }
    
    public Fu(String name){
        System.out.println("父类带参构造...'");
        this.name = name;
    }

    void haha(){
        System.out.println("微笑...");
    }
}
class Zi extends  Fu{

    public Zi(){
        super("张三");//如果不写,默认调用父类的空构造
        System.out.println("子类空构造...'");
    }

    void haha(){
        System.out.println("嘿嘿笑");
    }

    void test(){
        haha(); //默认就近原则
        super.haha(); //通过父类对象调用父类中的成员
    }
}

在静态方法中不能使用this,super关键字

四,Override方法的重写

4.1 overload重载与override重写的区别

共同点: 都是方法的特性

不同:

  1. 重载的三个条件:

    • 同一个类中的多个方法

    • 方法名相同

    • 参数列表不同 | 方法签名不同

  2. 重写的三个条件:

  • 不同的两个类

  • 继承关系|实现关系

  • 方法签名相同

调用:
如果子类中存在方法的重写,当通过子类对象调用的时候,会调用子类中重写的方法,会对父类方法进行屏蔽

作用:
当子类从父类中继承了某一个方法,方法满意,方法的实现|体不满意的时候,就可以在子类重新实现方法 ,重新定义方法体,重写方法

public class Test {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.shout();
        Dog dog = new Dog();
        dog.shout();
    }
}

class Animal{
    public void shout(){//与Dogs子类方法同名同参数列表
    	System.out.println("发出声音!");
    }
}

class Dog extends Animal {
    public void shout(){//与Animal父类同名同参数列表
    	System.out.println("汪汪汪!");
    }
}

父类方法的重写:

  1. “==”:方法名、形参列表相同。
  2. “≤≤”:返回值类型和异常类型,子类小于等于父类。
  3. “≥”:访问权限,子类大于等于父类

以下方法不能重写:

  1. private 修饰的方法
  2. static 修饰的方法
  3. final 修饰的方法

检查是否为重新方法:

  1. 在方法的左侧行首存在o^标识
  2. 使用一个注解强制检查当前方法是否为一个重写方法@Override

五,final关键字

final 关键字
最终的
是成员修饰符,也可以修饰局部

  • ​ 被final修饰的变量为常量
  • ​ 被final修饰的方法不能被重写
  • ​ 被final修饰的类不能被继承–>太监类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值