/**
* 类、对象、面向过程、面向对象的理解:
* 1、类:类是封装对象的属性和方法的载体
*
* 2、对象:对象是类抽象出来的一个实例
*
* 3、面向过程:面向过程注重的是具体的实现过程,因果关系
*
* 4、面对对象:面向对象注重的是对象要完成哪些功能,独立体
* */ /**
* 面对对象的三大特征:封装、继承、多态
*
* 1、封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高程序的维护性。
*
* 2、继承:主要思想就是将子类的对象作为父类的对象来使用,提高代码复用。
*
* 3、多态:父类引用变量指向子类对象。降低耦合度,提高扩展力。
* */

一、封装:

/**
* 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高程序的维护性
*
* 简单来说就是使用private来修饰变量,仅对外提供set与get方法来访问变量
* */
class Provider{
private Integer id;
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
} public class EncapsulateDemo {
public static void main(String[] args) {
Provider provider = new Provider();
provider.setName("zhan");
System.out.println(provider.getName());
//private修饰的变量或方法无法直接访问,只能在同一个包中同一个类才能直接访问
// provider.id = 1;
// System.out.println(provider.id);
} }

二、继承:

1、super关键字与this关键字:

/**
* 继承:主要思想就是将子类的对象作为父类的对象来使用,提高代码复用。
*
* 继承的语法形式:class 子类名 extends 父类名
*
* Java是单继承的,一个子类只能有一个父类,可以采用嵌套继承方式
* clss A {}
* class B extends A {}
* class C extends B {}
* 注:
* 1、final关键字的类不能被继承
*
* */

//不得不提的super关键字与this关键字
/**
* super关键字:用于访问父类内容
* 方式1、【super()】:在子类的构造方法中使用,相当于调用父类的构造方法
* 方式2、【super.】:在子类的成员方法中使用,可以调用父类的成员变量或成员方法
*
* this关键字:用于访问本类中的内容
* 方式1、【this.】:表示访问本类中的成员变量或方法;
* 方式2、【this()】:使用在构造方法中,表示调用本类中重载的构造方法,只能出现在构造方法第一行
* 注 :只能用在实例方法中,不能用在静态方法中
*
* */
class Provider{
//父类
private Integer id;
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
}
}
//子类
class Consumer extends Provider{
//可以添加自己特有的属性
private String passWord; //无参构造
public Consumer(){
//在子类构造方法中super关键字只能出现在第一行,表示调用其父类的构造方法
super();
} public void demo(){
//调用父类成员变量
super.setId(2);
} //有参构造
public Consumer(String passWord) {
//表示调用本类中重载的构造方法,只能出现在第一行
this();
//表示调用本类中成员变量与方法
this.passWord = passWord;
this.demo();
} public String getPassWord() {
return passWord;
} public void setPassWord(String passWord) {
this.passWord = passWord;
} } public class InheritDemo {
public static void main(String[] args) {
Consumer consumer = new Consumer();
consumer.setId(1);
consumer.setPassWord("123");
System.out.println(consumer.getId());
System.out.println(consumer.getPassWord());
}
}

三、多态:

1、接口实现与重写:

/**
* extends:继承
* implements:实现
* 总结:单继承,多实现
* (即继承,一个子类只能有一个父类;实现:一个子类可以有多个父类)
*/
/**
* 多态:父类引用变量指向子类对象。降低耦合度,提高扩展力。
* (一种思想方式)
*/ //接口实现
interface ProviderOne {
public void demoOne();
} interface ProviderTwo {
public void demoTwo();
} class ConsumerOne implements ProviderOne, ProviderTwo {
@Override
public void demoOne() {
System.out.println("实现一");
}
@Override
public void demoTwo() {
System.out.println("实现二");
}
}
//类继承
class ProviderThree {
public void demoThree() {
}
}
class ConsumerTwo extends ProviderThree{
public void demoThree() {
/**
* 子类重写父类要求:
* 1、重写的方法的权限修饰符只能更高,不能更低
* 2、重写的方法抛出的异常只能更少不能更多
* */
System.out.println("重写父类方法");
}
public void demoFour() {
System.out.println("子类特有方法,提高扩展力");
}
} public class PolymorDemo {
public static void main(String[] args) {
//多态是一种思想,父类引用变量指向子类对象
ProviderOne providerOne = new ConsumerOne();
providerOne.demoOne(); ProviderThree providerThree = new ConsumerTwo();
providerThree.demoThree();
//提高扩展力
ConsumerTwo consumerTwo = new ConsumerTwo();
consumerTwo.demoThree();
//子类特有方法
consumerTwo.demoFour(); }
}

搜索

复制

2、Java封装、继承与多态的更多相关文章

  1. java封装继承以及多态(含代码)

    封装 该露的露,该藏的藏 我们常需设计要追求,"高内聚,低耦合".高内聚就是类的内部数据操作细节自己完成.不允许外部干涉:低耦合:仅暴漏少量的方法给外部使用. 封装(数据的隐藏) ...

  2. day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态

    Python之路,Day20 = 序列类型,绑定方法,类方法,静态方法,封装继承和多态 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要 ...

  3. Java的继承和多态

    看了博客园里面的一个文章,关于java的继承和多态: class A ...{ public String show(D obj)...{ return ("A and D"); ...

  4. Java 封装 继承 多态

    Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法 ...

  5. [转]Java中继承、多态、重载和重写介绍

    什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...

  6. Java基础——继承和多态

    面向对象的编程允许从已经存在的类中定义新的类,这称为继承. 面向过程的范式重点在于方法的设计,而面向对象的范式将数据和方法结合在对象中.面向对象范式的软件设计着重于对象以及对象上的操作.面向对象的方法 ...

  7. Java面向对象㈡ -- 继承与多态

    Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆 ...

  8. objective-c自学总结(三)---面向对象的封装,继承与多态

    面向对象的三大特性 封装 继承 多态 1.封装: 隐藏属性,方法或实现细节的过程称为封装 信息隐藏,隐藏对象的实现细节,不允许用户看到 将东西包装在一 然后以新的完整形式呈现出来 例如,两种或多种化学 ...

  9. [ Java学习基础 ] Java的继承与多态

    看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...

  10. Java的封装继承和多态

    封装 定义:属性私有private:get/set 目的 提高程序的安全性,保护数据 隐藏代码的实现细节 统一接口 提高系统的可维护性 代码 public class Student { //名字 p ...

随机推荐

  1. androidmanifest.xml 反编译

    androidmanifest.xml 反编译 去除更新只修改androidmanifest.xml内容 解压apk文件后得到这个文件androidmanifest.xml windwos安装java ...

  2. BZOJ3732 Network(Kruskal重构树)

    Kruskal重构树的模板题. 给你N个点的无向图 (1 <= N <= 15,000),记为:1-N.图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: ...

  3. 2022.3.12 提高A组总结&反思

    今天有点上头了 T1:开场秒,大水题,一眼莫队了,最后没打 T2:开场以为是费用流,后来发现费用流做不了,在做T3的时候突然发现可以状压,也没打 T3:这道题给我极大的亲切感,导致我一个上午硬钢这道题 ...

  4. VScode将代码提交到远程服务器、同时解决每次提交都要输入密码的问题(这里以gitee为例子)

    文章目录 1.第一种情况.项目直接从gitee上拉取下来 2.第二种情况.将新建的项目提交到远程服务器 3.解决将代码提交到远程每次都要输入用户名和密码 4.个人遇到的奇葩问题 1.第一种情况.项目直 ...

  5. 26.ViewSet和action

      在dispatch过程中,下列属性可用于 ViewSet : basename - 根url路径 action - 当前动作类型(例如 list , create ). detail - 用于指示 ...

  6. 8.-Django应用及分布式路由

    一.应用 应用在Django项目中是一个独立的业务模块,可以包含自己的路由.视图.模版.模型,可以看成一个小的mtv 创建步骤 1.项目下用manage.py中的子命令创建应用文件夹 python3 ...

  7. 云原生之旅 - 6)不能错过的一款 Kubernetes 应用编排管理神器 Kustomize

    前言 相信经过前一篇文章的学习,大家已经对Helm有所了解,本篇文章介绍另一款工具 Kustomize,为什么Helm如此流行,还会出现 Kustomize?而且 Kustomize 自 kubect ...

  8. rocky二进制安装mysql8.0

    (ubuntu的有点问题) 点击查看代码 #!/bin/bash Version=`cat /etc/os-release |awk -F'"| ' '/^NAME/{print $2}'` ...

  9. 支持JDK19虚拟线程的web框架,之五(终篇):兴风作浪的ThreadLocal

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos <支持JDK19虚拟线程的web框架>系列 ...

  10. 2022春每日一题:Day 7

    题目:Fire 先预处理出每个F蔓延的时间,再bfs走迷宫. 代码: #include <cstdio> #include <cstdlib> #include <cst ...