2、Java封装、继承与多态
/**
* 类、对象、面向过程、面向对象的理解:
* 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封装、继承与多态的更多相关文章
- java封装继承以及多态(含代码)
封装 该露的露,该藏的藏 我们常需设计要追求,"高内聚,低耦合".高内聚就是类的内部数据操作细节自己完成.不允许外部干涉:低耦合:仅暴漏少量的方法给外部使用. 封装(数据的隐藏) ...
- day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态
Python之路,Day20 = 序列类型,绑定方法,类方法,静态方法,封装继承和多态 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要 ...
- Java的继承和多态
看了博客园里面的一个文章,关于java的继承和多态: class A ...{ public String show(D obj)...{ return ("A and D"); ...
- Java 封装 继承 多态
Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法 ...
- [转]Java中继承、多态、重载和重写介绍
什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上 ...
- Java基础——继承和多态
面向对象的编程允许从已经存在的类中定义新的类,这称为继承. 面向过程的范式重点在于方法的设计,而面向对象的范式将数据和方法结合在对象中.面向对象范式的软件设计着重于对象以及对象上的操作.面向对象的方法 ...
- Java面向对象㈡ -- 继承与多态
Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆 ...
- objective-c自学总结(三)---面向对象的封装,继承与多态
面向对象的三大特性 封装 继承 多态 1.封装: 隐藏属性,方法或实现细节的过程称为封装 信息隐藏,隐藏对象的实现细节,不允许用户看到 将东西包装在一 然后以新的完整形式呈现出来 例如,两种或多种化学 ...
- [ Java学习基础 ] Java的继承与多态
看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...
- Java的封装继承和多态
封装 定义:属性私有private:get/set 目的 提高程序的安全性,保护数据 隐藏代码的实现细节 统一接口 提高系统的可维护性 代码 public class Student { //名字 p ...
随机推荐
- [CG从零开始] 4. pyopengl 绘制一个正方形
在做了 1-3 的基础工作后,我们的开发环境基本 OK 了,我们可以开始尝试利用 pyopengl 来进行绘制了. 本文主要有三个部分 利用 glfw 封装窗口类,并打开窗口: 封装 shader 类 ...
- 前端微信登录获取code,userInfo,openid
getUser(e) { wx.getUserProfile({ desc: '用户完善会员资料', success: res => { let userInfo = res.userInfo; ...
- Response对象页面重定向、时间的动态显示
Response对象 response对象主要用于对客户端的请求进行回应,将web服务器处理后的结果发回给客户端,封装了jsp产生的响应,并发送到客户端响应客户端的请求,请求的数据可以是各种数据类型, ...
- 再有人说synchronized是重量级锁,就把这篇文章扔给他看
synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用. 但不可否认的是synchr ...
- 齐博x1如何取消某个标签的缓存时间
标签默认会有缓存, 如果你要强制取消缓存时间的话, 可以加上下面的参数 time="-1"如下图所示 标签默认缓存时间是10分钟, 你也可以改成其它时间 比如 time=" ...
- Sentinel 介绍与下载使用
sentinel 前方参考 计算QPS-Sentinel限流算法 https://www.cnblogs.com/yizhiamumu/p/16819497.html Sentinel 介绍与下载使用 ...
- 论文笔记 - PRISM: A Rich Class of Parameterized Submodular Information Measures for Guided Subset Selection
Motivation 与 Active Learning 类似,Target Learning 致力于 挑选外卖更"感兴趣"的数据,即人为为更重要的数据添加 bias.例如我们当前 ...
- Azure Devops Create Project TF400711问题分析解决
前几天,团队使用Azure Devops创建团队项目出了一个奇怪的错误: TF400797: 作业扩展具有一个未处理的错误: Microsoft.TeamFoundation.Framework.Se ...
- 自学 TypeScript 第一天 环境开发配置 及 TS 基本类型声明
前言: 自学第一天,什么是TS ,为什么要用 TS TS 全程 Typed JavaScript at Any Scale 解释起来就是 添加了类型系统的 JavaScript, 是 JavaScr ...
- Go语言核心36讲12
作为Go语言最有特色的数据类型,通道(channel)完全可以与goroutine(也可称为go程)并驾齐驱,共同代表Go语言独有的并发编程模式和编程哲学. Don't communicate by ...