• 【Java学习】面向对象(二)——封装、继承、多态、抽象



    前言

    本文将详细介绍面向对象的特性,封装、继承、多态以及抽象。使我们更深一层去理解面向对象的含义。

    正文

    一、类的继承

    -继承

    1.定义

    在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的心类被称作子类,现有类被称作父类; 子类会自动拥有父类所有可继承的属性和方法。

    2.关键字

    extends

    3.注意

    ①在Java中,类只支持单继承,不允许多重继承,相当于一个类只能有一个直接父类。

    class A{}
    class B{}
    class C extends A,B{}		//C类不可同时继承A类和B类
    

    ②多个类可以继承一个父类。

    class A{}
    class B extends A{}
    class C extends A{}		//类B和类C都可以继承类A
    

    ③在Java中,可以有多层继承,即一个类的父类也可以再去继承另外的父类。

    class A{}
    class B extends A{}		//类B继承类A,类B是类A的子类
    class C extends B{}		//类C继承类B,类C是类B的子类,同时也是类A的子类
    

    ④在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。

    -重写

    1.定义

    在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需对继承的方法进行修改,即对父类的方法进行重写。

    2.注意

    ①在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。
    ②子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限。

    二、super关键字

    1.定义

    当子类重写父类的方法之后,子类对象将无法访问父类被重写的方法,此时可用 super 关键字用于访问父类的成员(成员变量、成员方法和构造方法)。

    2.用法

    ①调用父类的成员变量和成员方法

    super.成员变量
    super.成员方法([参数1,参数2])
    

    ②调用父类的构造方法

    super([参数1,参数2])
    
    -注意

    在定义一个类时,如果没有特殊需求,尽量在类中定义一个无参的构造方法,避免被继承时出错。

    三、final关键字

    1.特性

    ①final 修饰的类不能被继承
    ②final 修饰的方法不能被子类重写
    ③final 修饰的变量(成员、局部)是常量,只能赋值一次。

    2.注意

    在使用final修饰成员变量时,虚拟机不会对其进行初始化,因此需要我们在定义变量的同时赋予一个初始值。

    四、抽象类

    1.定义

    抽象方法: 不包含方法体的方法为抽象方法,必须使用 abstract 关键字来修饰。

    abstract void eat();		//定义抽象方法eat
    

    抽象类: 当一个类中包含抽象方法,该类必须使用 abstract 关键字来修饰,使用abstract修饰的类为抽象类。

    abstract class Fruit{		//定义抽象类Fruit
    	abstract int eat();		//定义抽象方法eat()
    }
    
    2.注意

    ①包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法,只需使用abstract修饰即可;
    ②抽象类不可以被实例化,因为抽象类中有可能包含抽象方法,而抽象方法没有方法体,不可被调用;
    ③如果想调用抽象类中定义的方法,需创建一个子类,在子类中将抽象类中的抽象方法进行实现。

    五、接口

    1.定义

    如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方式来定义,即接口。

    interface Animal{
    	int ID=1;			//定义全局常量
    	void breath();		//定义抽象方法
    	void run();
    }
    
    2.关键字

    Interface

    3.特点

    ①接口中的方法都是抽象的,不能实例化对象
    ②当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否则需要实现接口中的所有方法。
    ③一个类通过 implements 关键字实现接口时,可以实现多个接口,被实现的多个接口之间要用逗号隔开。
    ④一个接口可以通过 extends 关键字继承多个接口,接口之间用都好隔开。

    六、多态

    1.定义

    在同一个方法中,由于参数类型不同而导致执行效果各异的现象就是多态。

    2.用法
    -对象的类型转换

    -instanceof关键字: 判断一个对象是否为某个类(或接口)的实例或者子类实例。

    对象(或者对象引用变量) instanceof 类(或接口)
    
    -Object类

    定义: 所有类的父类,即每个类都直接或间接继承自该类。

    -匿名内部类

    定义: 如果方法的参数被定义为一个接口类型,那么就需要定义一个类来实现接口,并根据该类进行对象实例化。除此之外,还可使用匿名内部类来实现接口。

    结语

    以上就是Java面向对象的基础知识了,欢迎提出宝贵意见~

  • 相关阅读:
    visual studio项目多级引用不拷贝dll的问题
    ef6 code first,对已有数据库如何执行迁移
    wsl 修改默认安装路径
    Windows docker镜像文件无法删除
    Docker镜像下载很慢,各种加速无效
    activemq整合springboot使用(个人微信小程序用)
    angular入门一之环境安装及项目创建
    jquery中attr()和prop()的区别
    IntelliJ IDEA部署web项目,Tomcat没有出现Artifacts
    IntelliJ IDEA:创建Java Web工程
  • 原文地址:https://www.cnblogs.com/txge/p/13973579.html
Copyright © 2020-2023  润新知