tk's blog
  • tk's blog Read Me
  • 算法相关
    • 数据结构
      • 【集训整理】 旋转treap模板
      • 二叉树及相关数据结构的java语言实现
      • 快乐树0x01:AVL树的java实现
      • 快乐树0x02 线段树实现(c++)
      • 链表的Java语言实现
    • 算法
      • DP的背包问题小结-java语言描述
      • 【集训整理】2-SAT问题 模板题
      • 【集训整理】Tarjan算法 模板题
      • 【集训整理】差分约束 模板题
      • 【集训整理】最近公共祖先LCA 模板题
      • 二分查找与二分答案-java实现
      • 动态规划-java语言练习一:暴力DP
      • 快速幂
      • 状态压缩DP-java描述
      • 差分
      • 乘法逆元
    • 题解
      • CFRound-GoodBye2022题解
  • java相关
    • Java与算法竞赛——注意事项摘录
    • java面向对象简要总结 一
    • java面向对象简要总结 三
    • java面向对象简要总结 二
  • 后端相关
    • Linux-Crontab命令
    • Spring Data JPA 使用方法
    • Spring集成Artemis实现JSM的异步消息传递
    • Spring使用自定义配置项
    • MIT6.824分布式系统Lab1.MapReduce笔记
    • MIT6.824分布式系统Lab2-Raft-A笔记
    • MIT6.824分布式系统Lab2-Raft-B笔记
  • 杂谈
    • 杂谈-关于2021
  • 杂项
    • c语言 scanf的返回值
    • 系统设计
  • 计科基础
    • 编译原理
      • 编译原理:词法分析笔记
    • CSAPP 第二章笔记
    • 计算机组成原理笔记
    • CSAPP Lab1. Datalab
    • CSAPP Lab2 Bomblab
  • C++每日一题
    • C++每日一题 Day 1 肥宅水
    • C++每日一题 Day 2 数字反转
    • C++每日一题 Day 3 理五的凡尔赛风气
    • C++每日一题 Day 4 我喜欢这个数
    • C++每日一题 Day 5 数字楼梯
    • C++每日一题 Day 6 插火把
    • C++每日一题 Day 7 贪吃蛇
    • C++每日一题 Day 8 蒙德最强战力
    • C++每日一题 Day 9 璃月七星选举
    • C每日一题 Day 2 肥宅水
    • C每日一题 Day 3 理五的凡尔赛风气
    • C语言每日一题 Day 1 荧妹好感队
由 GitBook 提供支持
在本页
  • 一、类的继承
  • 二、重写
  • 三、重载
  • 四、隐藏和封装
  • 五、接口
  1. java相关

java面向对象简要总结 二


一、类的继承

类可以继承,即基于原有的类派生出一个新类,子类继承父类的属性和方法。

继承表示方法:

<修饰符> class 子类名 extends 父类名{

类体

}

这样子类就可以调用父类的属性和方法。

例子:

class testclass {
    public int normal_int = 1;
}

class another_class extends testclass{
            int another_int = 1;
            void a() {
                normal_int = 233; //调用父类中的属性
            }
        }

可以通过 super.[属性或方法名] 来访问父类的属性或方法。

继承可以是多重次的,访问多重继承不需要使用super.super,因为父类已经继承了其上的所有父类。

同其他方法一样,子类也可以直接调用父类的构造方法。示例如下:

class testclass2 extends testclass1{
    testclass2(){ //testclass2的构造方法
        super(); //调用父类的构造方法
    }
}

二、重写

重写建立在继承关系上,能够让子类重新编写父类的某些方法,以使子类能够更加适应程序的需求。

例子:

class oneClass{
    void print(){
        System.out.println("属于父类");
    }
}

class anotherClass{
    void print(){
         System.out.println("属于子类");
    }
}

如果在子类中调用.print(),则实际会调用到被重写了的print方法,输出“属于子类”。

三、重载

在java中,只要方法的参数不一样,就可以允许两个或多个方法同名。因此,可以基于提供参数的不同,分别执行不同的方法。

例子:

public class oneClass{
    void print(){
        System.out.println("打印了寂寞");
    }
    void print(int a, int b){
        System.out.println(a+"和"+b);
    }
    void print(int a, bool b){
        System.out.println(a+"和"+b);
    }
}

四、隐藏和封装

java提供了3种访问控制符,与默认权限一起组成了4种访问控制级别,分别是:

  • private

  • default

  • protected

  • public

通过对类的属性和方法进行有效的权限控制,可以隐藏有必要隐藏的内容,只对外保留以需要的方法或属性的访问权限,以确保自己程序的运行不会因为外界访问而产生问题。

也可以通过访问权限控制,增加符合自身要求的供外界调用的方法,保证数据的产生或修改都符合自身程序要求,保证运行稳定,而不是让外界直接修改类内部的数据。

所谓“高内聚,低耦合”,就是让内部具体实现的方式封装在内部,而只提供少量必要方法供外部使用。

五、接口

接口与类相似,接口也可以定义方法,作为系统与外界交互的窗口,规范实现者提供的服务,可以作为多个程序之间的通信标准。

申明方法:

[public] interface 接口名 {

[常量]

抽象方法

}

接口中为保证静态且final,只能定义常量,不能定义变量。

接口里的方法都是公共的且抽象的,默认强制设置,可以不用关键字修饰。

因为接口中的方法都是抽象的,要实现这些方法,必须要由其他类来进行实现。

实现接口的格式:

class 类名 implements <接口名> {

...

}

例子:

interface jiekou{
    int add(int a,int b);
}
class classOne implements jiekou{
    public int add(int a,int b){
        return a+b;
    }
}

一个类可以实现多个接口,弥补了继承的不足。

implements 接口1, 接口2

通过面向接口编程,能够实现将具体实现和限制要求分离,从而减少程序间的耦合。

上一页java面向对象简要总结 三下一页后端相关

最后更新于2年前