ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 面向对象概括和总结

2020-12-03 14:31:45  阅读:178  来源: 互联网

标签:Java 概括 子类 接口 面向对象 抽象类 父类 方法 public


Java 面向对象概括和总结

前言

本文章要求对面向对象概念有一定的认知,因为不会特别细节的去说一个概念问题

一、面向对象的三大特性:封装 继承 多态

封装

将对象的属性和方法相结合,通过方法将对象的属性和实现细节保护起来,实现对象的属性隐藏。(封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。)

通常来说,Java修饰符就起到了封装的作用,或者比如设置XX属性的取值和赋值的方法,用于对这些属性的访问权限进行区分

public class Person {
//封装的表现1
    private String name;
    private int age;
//封装的表现2://在内部进行业务逻辑的控制,外部只调用即可
   public void setAge(int age)
    {
        if(age<18||age>40)//对年龄进行限制
        {
            System.out.println("年龄必须在18到40之间!");
            this.age=20;    //默认年龄
        }
        else
        {
            this.age=age;
        }
    }
}

继承

是子类继承父类的特征和行为,使得子类具有父类相同的行为。

也就是说,继承是代码复用的一种形式,即在具有包含关系的类中,从属类继承主类的全部属性和方法,从而减少了代码冗余,提高了程序运行效率。
在这里插入图片描述
继承关键字:
extends :继承
implements:实现
附:类用于继承,接口用来实现

类的继承格式:

class 父类 {
}
class 子类 extends 父类 {
}
e.g:
public class Person{
public String name; //姓名
public int age; //年龄
public String sex; //性别
}
//学生继承了人类,同时具有了,姓名、年龄、性别属性
public class Student extends Person{
private String stuNo; //学号
private String department; //所学专业
}

接口的实现格式:

public interface A {
public void eat();
public void sleep();
}
public interface B {
public void show();
}
public class C implements A,B {
}

附:通过以上2个格式,可以得出:子类只能继承一个父类,一个类可以实现多个接口

多态

父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,使得同一个属性或方法在父类及其各个子类中具有不同的含义
细分:
编译时多态:静态的,主要是指方法的重载
运行时多态:动态的,通过动态绑定来实现强调文本 (多态性的体现 )

多态存在的三个必要条件:
继承
重写
父类引用指向子类对象(e.g:Parent p = new Child();)

多态的实现方式:

重写,接口,抽象类和抽象方法

二、重载、重写

重载:

同一个类中的两个或多个方法可以共享同一个名称,只要它们的参数声明不同
(同名不同参,返回类型可同可不同 e.g:构造器的重载)

重写:

子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能
(同名同参同返回类型)

子类中调用父类的被重写方法:Super 关键字

class Dog extends Animal{
   public void move(){
      super.move(); // 应用super类的方法
   }
}

两者都是多态性的体现:

方法重载是一个类的多态性表现,
方法重写是子类与父类的一种多态性表。

三、抽象类、接口

抽象类 abstract

由abstract修饰的类叫抽象类,abstract修饰的方法叫抽象方法;
抽象的类无法进行实例化,因为他不是具体存在的类,现实生活中如描述动物:哺乳类,爬行类等就相当于抽象类
注意:抽象类里面可以有普通的方法,其他子类在继承这个抽象类时可以不继承这个普通方法,但必须实现这个抽象类的的抽象方法

代码例子:

abstract class 类名{
abstract int 方法名(int x,int y);
注意:抽象方法没有方法体
}

抽象类的特点:

(1)抽象类不能被实例化

(2)构造方法 和 static 方法不能是抽象的

(3)父类的抽象方法往往在子类中实现

(4)抽象类可以具有指向子类对象的对象引用

附:抽象类和普通类的区别?
(1)实例化:普通类可以直接实例化;抽象类不能被实例化,因为它是存在于一种概念而非具体。
(2)继承方面:普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非子类也是抽象类。

接口 interface

接口属于百分之百抽象类,所以接口中的方法必须全部是抽象方法,无方法体,这也就说明了接口只管规定规则,不管规则的具体实现方式

附:抽象类和接口的区别?
抽象类是对本质的抽象,接口是对动作的抽象(抽象类表示的是,这个对象是什么。 接口表示的是,这个对象能做什么)
相同点:抽象类和接口都是不能被实例化的(因为都是被用做于父类用的,一个继承,一个实现)
不同点
1.构造方法:抽象类可以有构造方法,接口中不能有构造方法
2.成员变量:抽象类中可以有许多成员变量,接口中没有普通成员变量
3.普通方法:抽象类中包含非抽象的普通方法,接口中的所有方法必须是抽象的,不能有非抽象的普通方法
4.访问类型:抽象类中的抽象方法的访问类型可以是public、protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认的类型为public abstract类型
5.静态方法:抽象类中可以包含静态方法,接口中不能包含静态方法
6.静态成员变量:两者都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static类型(默认也是如此)
7.一个类可以实现多个接口,但只能继承一个抽象类

附一篇关于接口很详细的描述:
JAVA基础——接口(全网最详细教程) 作者:刘扬俊
链接: https://blog.csdn.net/qq_19782019/article/details/80259836.

关于抽象类和接口的使用方向:

当你关注一个事物的本质的时候用抽象类;一般模块方法设计模式用的多,体现重用性
当你关注一个操作的时候用接口;一般系统架构的模块之间的互相通信

1


  1. 动力源泉:如果有帮助到的话,可以点赞,关注或者收藏呀~笔芯 ↩︎

标签:Java,概括,子类,接口,面向对象,抽象类,父类,方法,public
来源: https://blog.csdn.net/qq_44021875/article/details/110520178

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有