/**
* 类、对象、面向过程、面向对象的理解:
* 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. 前端程序员学习 Golang gin 框架实战笔记之一开始玩 gin

    原文链接 我是一名五六年经验的前端程序员,现在准备学习一下 Golang 的后端框架 gin. 以下是我的学习实战经验,记录下来,供大家参考. https://github.com/gin-gonic ...

  2. bfs与dfs基础

    bfs像二叉树的层序遍历 像这个图走bfs就{1, 2, 3, 4, 5, 6, 7, 8}这样走: dfs就{1, 2, 5, 6, 3, 7, 8, 4}. bfs与queue相结合,走到哪就把哪 ...

  3. Spring_Boot项目集成Swagger填坑

    事情是这样的: 最近疫情在家里闲的无聊 看了看Swagger-2 在练习的过程出现了错误 写个帖子 希望跟我有同样问题的朋友可以避雷. 下面进入正题: 编辑 我使用的swagger-2版本是2.9.4 ...

  4. jsp页面中怎么利用a标签的href进行传递参数以及需要注意的地方

    jsp页面中: <a href="${pageContext.request.contextPath }/infoController/getProductInfo?productId ...

  5. java.lang.ClassNotFoundException:(新建的servlet无法找到class文件)的报错

    该问题有可能是IDEA的部署没有更新的问题 将out中的 删除,然后重新导入即可

  6. jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上

    jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上 1.JavaBean的使用 package com.zheng; public class BookBean { ...

  7. 齐博x1标签之无刷新显示更多

    示范代码如下: <div class="ListMoreInfos"> {qb:tag name="news_list_page_listdata02&quo ...

  8. postman一些你不常用的实用技巧,竟然还能这么玩

    序言 各位好啊,我是会编程的蜗牛,作为java开发者,平时调试接口的时候,肯定需要用到接口调试工具,或者Swagger之类的.Swagger的优势在于它可以将后台加的一些接口注释信息直接展示出来,但是 ...

  9. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-KG4SL:用于人类癌症综合致死率预测的知识图神经网络

    5.(2021.7.12)Bioinformatics-KG4SL:用于人类癌症综合致死率预测的知识图神经网络 论文标题:KG4SL: knowledge graph neural network f ...

  10. 二十、Pod的存储之Configmap

    Pod 的存储之Configmap 一.Configmap介绍 ​ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.Co ...