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 ...
随机推荐
- 华为云ubunbu部署.NetCore3.1项目(DDD商城)
提前项目打包发布,文件传输工具Filezilla,注意是选择sftp协议,将publish文件传到/home文件夹下 第一步 .NetCoreSDK安装 微软官方的文档https://docs.mi ...
- PHP Phar反序列化学习
PHP Phar反序列化学习 Phar Phar是PHP的压缩文档,是PHP中类似于JAR的一种打包文件.它可以把多个文件存放至同一个文件中,无需解压,PHP就可以进行访问并执行内部语句. 默认开启版 ...
- 我说HashMap初始容量是16,面试官让我回去等通知
众所周知HashMap是工作和面试中最常遇到的数据类型,但很多人对HashMap的知识止步于会用的程度,对它的底层实现原理一知半解,了解过很多HashMap的知识点,却都是散乱不成体系,今天一灯带你一 ...
- Linux实战笔记_CentOS7_yum相关配置
配置yum源优先级 配置优先级 yum -y install yum-plugin-priorities.noarch vi /etc/yum.repos.d/localISO.repo priori ...
- JUC(4)Callable和常用的辅助类
1.Callable 1.可以有返回值 2.可以抛出异常 3.方法不同.run()/call() future Task 细节: 1.有缓存 2.结果可能需要等待,会阻塞 2.常用的辅助类 2.1 C ...
- 第一阶段:linux运维基础·2
1. 找到当前目录下所有的.txt文件,且将查询结果写入到allfile.txt中 find . -type f -name '*.txt' > allfile.txt 2. 解读如下语句 -r ...
- 五、kubernetes节点与令牌管理
Kubernetes节点与令牌管理 一.令牌管理 查看令牌 [root@master ~]# kubeadm token list 删除令牌 [root@master ~]# kubeadm toke ...
- Rocky之Mysql-MHA高可用
9.半同步复制 安装插件三种方法: 第一种: mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so' 安装 在 ...
- pod(五):pod hook(pod钩子)和优雅的关闭nginx pod
目录 一.系统环境 二.前言 三.pod hook(pod钩子) 四.如何优雅的关闭nginx pod 一.系统环境 服务器版本 docker软件版本 Kubernetes(k8s)集群版本 CPU架 ...
- 《ASP.NET Core技术内幕与项目实战》精简集-目录
本系列是杨中科2022年最新作品<ASP.NET Core技术内幕与项目实战>及B站配套视频(强插点赞)的精简集,是一个读书笔记.总结和提炼了主要知识点,遵守代码优先原则,以利于快速复习和 ...