一、封装

  封装的核心在于私有化(private),大部分情况下,来封装对象的属性,很少有封装方法的。通过将对象的属性封装,提供对外的公共方法来访问属性是最常见的方式。

public static class FengZhuang{
// 通过封装,设置私有属性
private String name;
private int age;
//通过提供公共的对外接口,访问私有属性
public void setName(String name){
this.name = name;
} public int getAge() {
return age;
}
public void setAge(int age){
if (age < 10 || age > 110){
System.out.println("年龄设置不符合要求!!!");
return;
}else {
this.age = age;
}
}
public static void main(String[] args) {
FengZhuang fengZhuang = new FengZhuang();
fengZhuang.setAge(242);
fengZhuang.setName("Gao"); System.out.println(fengZhuang.getAge());
}

二、继承

  继承是子类继承父类的方法和属性,私有方法不能被继承,java只能进行单继承,也就是说一个子类只有一个父亲,但是一个父亲可以有多个儿子。

// 定义一个Vehicle类 : 父类
public static class Vehicle {
// 定义属性
private int wheels;
private double weight;
// 有参构造方法
public Vehicle(int wheels, double weight) {
super();//继承Object有参构造方法
this.wheels = wheels;
this.weight = weight;
}
// 无参构造方法
public Vehicle() {
super();//继承Object无参构造方法
}
// 配合private使用,防止恶意篡改数据
public int getWheels() {
return wheels;
}
public void setWheels(int wheels) {
this.wheels = wheels;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
// 方法show1
public void show1(){
System.out.println("车轮个数:"+this.wheels);
System.out.println("车重:"+this.weight+"吨");
}
}
// 创建一个Car类:子类
public static class Car extends Vehicle{//extends Vehicle:声明父类为Vehicle
private int loader; public Car(int wheels, double weight, int loader) {
super(wheels, weight);//继承Vehicle有参构造方法
this.loader = loader;
} public Car() {
super();//继承Vehicle无参构造方法
} public int getLoader() {
return loader;
} public void setLoader(int loader) {
this.loader = loader;
}
// 方法show2
public void show2(){
System.out.println("车载人数为:"+this.loader);
}
}
// 创建一个Truck类:子类
public static class Truck extends Car {//extends Car:声明父类为Car private double payload; public Truck(int wheels, double weight, int loader, double payload) {
super(wheels, weight, loader);//继承Car有参构造方法
this.payload = payload;
} public Truck() {
super();//继承Car无参构造方法
} public double getPayload() {
return payload;
} public void setPayload(double payload) {
this.payload = payload;
}
// 方法show3
public void show3(){
System.out.println("有载重量为:"+this.payload+"吨");
}
}
public static void main(String[] args) {
// 创建子类对象
Truck cm = new Truck();
cm.setWheels(4);
cm.setWeight(1.5);
cm.setLoader(5);
cm.setPayload(2);
//调用 方法
cm.show1();
cm.show2();
cm.show3();
}

三、多态

  多态,顾名思义有多种形式,它允许不同的对象对同一个消息做出不同的响应。多态是同一个接口,通过使用不同的实例而执行不同的操作。

  多态主要分为两种:重写和重载。重载是编译型多态,重写是运行时多态。编译看左边,运行看右边。

  首先,对 “重写” 作一番解释,重写 发生于 继承关系中,子类在继承父类的原有方法。但是我们在有些情况下,不想要继承原有的方法,所以要对继承的方法进行重写,但是有一点需要注意,就是子类函数的访问修饰符权限不能够少于父类。重写是一个“动态绑定”,只有在运行的时候,我们才能确定访问具体方法是哪一个。

class Vegetable{
public void vegetable(){
System.out.println("蔬菜");
}
} class Cucumber extends Vegetable{
@Override
public void vegetable() {//子类Cycle对父类Vegetable的vegetable方法的重写
System.out.println("黄瓜");
}
} class Bittermelon extends Vegetable{
@Override
public void vegetable(){//子类Bittermelon对父类Vegetable的vegetable方法的重写
System.out.println("苦瓜");
}
}

 

  其次是重载,重载相比较于重写,简单一些,要求在于 “同名方法” 的参数列表不同。例子:fangfaming(int A) 与 fangfaming(int A,int B)是多态中的重写。 

public class A {

    public static void main(String[] args) {
A a=new A();
a.test(1,2);
a.test(1);
}
public void test(int i,int j){
System.out.print("A");
}
public void test(int i){
System.out.print("B");
}
}
//答案:AB

  

  

Java面向对象编程的三大特性:封装、继承、多态。的更多相关文章

  1. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

  2. C++三大特性 封装 继承 多态

    C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...

  3. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  4. Python面向对象之:三大特性:继承,封装,多态以及类的约束

    前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...

  5. OOP三大核心封装继承多态

    OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...

  6. JAVA的三大特征 封装继承多态- 简单总结

    简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...

  7. Java面向对象概述和三大特性

    Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心.围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范.继承是类与类之间联系的一种形式.而多态 ...

  8. javascript 学习笔记之面向对象编程(二):继承&多态

    ~~接上篇~~上一篇实现了类的实现以及类成员变量和方法的定义,下面我们来了解下面向对象中两个最重要的特性:继承和多态. 继承 js中同样可以实现类的继承这一面向对象特性,继承父类中的所有成员(变量和属 ...

  9. 3.java面向对象编程三大特性之多态

    面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对类的外部而言它的内部实现细节是隐藏的,暴露给外界的只是它的实现方法. ...

  10. 初步理解Java的三大特性——封装、继承和多态

    声明:整理自网络,如有雷同,请联系博主处理 一.封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被 ...

随机推荐

  1. 编译器性能调优:使用C++11实现高效编译器

    目录 1. 引言 2. 技术原理及概念 2.1. 基本概念解释 2.2. 技术原理介绍 <编译器性能调优:使用C++11实现高效编译器> 编译器是计算机程序的入口点,将源代码转换为可执行文 ...

  2. 1.3 Metasploit 生成SSL加密载荷

    在本节中,我们将介绍如何通过使用Metasploit生成加密载荷,以隐藏网络特征.前一章节我们已经通过Metasploit生成了一段明文的ShellCode,但明文的网络传输存在安全隐患,因此本节将介 ...

  3. 浅析synchronized锁升级的原理与实现

    背景 在多线程编程中,线程同步是一个关键的概念,它确保了多个线程对共享资源的安全访问.Java中的synchronized关键字是一种常用的线程同步机制,它不仅提供了互斥访问的功能,还具备锁升级的特性 ...

  4. 【EF Core】主从实体关系与常见实体关系的区别

    上次老周扯了有关主.从实体的话题,本篇咱们再挖一下,主.从实体之间建立的关系,跟咱们常用的一对一.一对多这些关系之间有什么不同. 先看看咱们从学习数据库开始就特熟悉的常用关系--多对多.一对一.一对多 ...

  5. 偷师MapStruct

    转自自己的qq空间 2022年10月26日 一个项目看三遍 每遍都有新发现 嘿嘿嘿 我是代码小偷

  6. ARM Trusted Firmware——编译选项(二)

    @ 目录 1. 常用部分 2. 安全相关 2.1 签名 2.2 加密 2.3 哈希 2.4 中断 3.GICv3驱动程序选项 4. 调试选项 1. 常用部分 编译选项 解释 BL2 指定生成fip文件 ...

  7. PTA 21级数据结构与算法实验4—字符串和数组

    目录 7-1 字符串模式匹配(KMP) 7-2 [模板]KMP字符串匹配 7-3 统计子串 7-4 好中缀 7-5 病毒变种 7-6 判断对称矩阵 7-7 三元组顺序表表示的稀疏矩阵转置运算Ⅰ 7-8 ...

  8. Linux 命令:lsof

    参考文档:lsof命令详解 lsof,列出系统中所有打开的文件. 各列字段意义如下: COMMAND: 进程的名称 PID: 进程标识符 USER: 进程所有者 FD: 文件描述符,应用程序通过文件描 ...

  9. STA学习笔记-0

    如今的逻辑设计复杂度和工作频率要求越来越高.为了保证设计稳定可靠,必须对设计附加时序约束,对综合实现结果进行时序分析. 导言 时序约束:主要用于规范设计的时序行为,表达设计者期望满足的时序条件,指导综 ...

  10. 关于"覆盖问题”的反思

    [HAOI2007]覆盖问题 题目描述 某人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定 用3个L*L的 ...