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 ...
随机推荐
- python实验报告(第五周)
一.实验目的和要求 学会使用字符串的常用操作方法和正确应用正则表达式. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:使用字符串拼接输出一个关于程序员的笑话 ...
- 220514 T1 查询 (二分查找+vector)
用vector记录每个数出现的位置,对于要查询的X,要找他落在L~R的个数有几个,用lower_bound和upper_bound查找,相减就是答案. 1 #include<bits/stdc+ ...
- SpringMVC访问不到默认页的问题。
在web.xml中配置了 <welcome-file-list> <welcome-file>index.html</welcome-file> </welc ...
- 大数据技术之HBase原理与实战归纳分享-下
@ 目录 整合Phoenix 定义 为何要使用 安装 SHELL操作 表的映射 简易JDBC示例 二级索引 二级索引配置文件 全局索引 包含索引 本地索引(local index) HBase与 Hi ...
- uoj131【NOI2015】品酒大会
题目链接 很容易想到p和q"r相似"就等价于在后缀数组中q与p之间的height值\(\ge r\),也就是说\(<r\)的那些height值会把排好序后的后缀分割成若干段, ...
- 认识 Redis client-output-buffer-limit 参数与源码分析
概述 Redis 的 client-output-buffer-limit 可以用来强制断开无法足够快从 redis 服务器端读取数据的客户端.保护机制规则如下: [hard limit] 大小限制, ...
- IDEA中设置背景图片(超详细)
文章目录 1.效果图 2.详细设置过程 1.效果图 2.详细设置过程
- eDP接口简介
1. eDP背景介绍 随着显示分辨率的越来越高,传统的VGA.DVI等接口逐渐不能满足人们的视觉需求. 随后就产生了以HDMI.DisplayPort为代表的新型数字接口,外部接口方面HDMI占据 ...
- ssh登录提示hosts is down
其他无用的网卡配置信息mv走重启network如果还是不行重启一下服务器问题就能解决
- VM虚拟机搭建Linux CentOS7(手把手教程)
VM虚拟机搭建Linux CentOS7(手把手教程) 目录 VM虚拟机搭建Linux CentOS7(手把手教程) 一.VM虚拟机和Linux镜像文件下载 1. 登录VM虚拟机官方地址: 2. 安装 ...