抽象:

我们在定义一个类的时候,实际上就是把一类事物的公有的属性和行为提取出来,形成一个物理模型,这种研究问题的方法称为抽象。

封装:

封装就是把抽象的数据和对数据进行的操作封装在一起,数据被保存在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行操作。

电视机的开关,对音量,颜色,频道的控制是公开的,谁都可以操作,但是对机箱后盖,主机板的操作却不是公开的,一般是由专业维修人员来玩。

那么java中如何实现这种类似的控制?

java提供了四种控制修饰符控制方法和变量访问的权限:

1.public:对外公开

2.protected:对子类和同一包中的类公开

3.没有修饰符号,向同一个包的类公开

4.private:只有类本身可以访问,不对外公开

包-三大作用:

@1.区分相同名字的类

@2.当类很多时,可以很好管理类

@3.控制访问范围

包-打包命令

package com.shunping;

包-命名规范

小写字母 比如 com.sina.shunping

包-常用的包

一个包下,包含很多的类,java中常用的包有:

java.lang.*;包 自动引入java.util.* 工具包

java.net.*;网络开发包 java.awt.*包 窗口工具包

继承:

继承可以解决代码复用问题,让我们编程更加靠近人类的思维,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类(比如刚才的Student),在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extend语句来声明继承 父类:

class 子类 extends 父类

这样,子类就会自动拥有父类定义的属性和方法。

继承注意事项:

  • 子类最多继承一个父类
  • java多有类都是Object类的子类
  • JDK6中有202个包3777个类、接口、异常、枚举、注释和错误
  • 在做开发的时候,强烈建议大家多查jdk文档

方法重载:

简单地说:方法重载就是类的同一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。

方法重载-注意事项

1.方法名相同

2.方法的参数类型、个数、顺序至少有一项不同

3.仅仅是返回类型不一样,是不能构成重载的

4.方法修饰符可以不同

5.如果只是控制访问符不同,不能构成重载

方法覆盖:

将父类的方法进行重新写。方法的覆盖就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说子类的这个方法覆盖了父类的那个方法,比如上个案例的Cat类中的cry方法就覆盖了Animal类的cry方法。

方法覆盖的注意事项:

(1)子类的方法的返回类型,参数,方法名称,要和父类方法的返回类型,参数,方法名称完全一样,否则编译出错。

(2)子类方法不能缩小父类方法的访问权限。(假设父类方法时public,但是你的子类方法改成了protected,这样就会出现报错)

约瑟夫问题:

多态:

所谓多态,就是指一个引用(类型)在不同情况下的多种状态,你也可以这样理解:多态是指通过指向父类的指针,来调用在不同子类中实现的方法。

多态的好处:

后面创建的类是前面创建的那个类的子类,就可以通过父类创建的对象对子类的方法进行访问,一个对象可以访问多个方法。

/***************

* 作者:T.song

* 功能:多态演示

* *****************/

public class grap extends JFrame{

public static void main(String[] args) {

// grap g1 = new grap();

Animal animal = new Cat();

animal.cry();

animal = new Dog();

animal.cry();

}

}

public class Animal {

int age;

String nameString;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getNameString() {

return nameString;

}

public void setNameString(String nameString) {

this.nameString = nameString;

}

public void cry() {

System.out.println("不知道怎么叫····");

}

}

//体现了方法的覆盖

class Cat extends Animal

{

public void cry() {

System.out.println("喵喵喵···");

}

}

class Dog extends Animal

{

public void cry() {

System.out.println("汪汪汪···");

}

}

public class Animal {

int age;

String nameString;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getNameString() {

return nameString;

}

public void setNameString(String nameString) {

this.nameString = nameString;

}

public void cry() {

System.out.println("不知道怎么叫····");

}

public void eat() {

System.out.println("不知道吃什么······");

}

}

//体现了方法的覆盖

class Cat extends Animal

{

public void cry() {

System.out.println("喵喵喵···");

}

}

class Dog extends Animal

{

public void cry() {

System.out.println("汪汪汪···");

}

}

class Food

{

public String name;

public void showName() {

}

}

class Fish extends Food

{

public void showName()

{

System.out.println("鱼···");

}

}

class Bone extends Food

{

public void showName()

{

System.out.println("骨头···");

}

}

class Master

{

//给动物喂食物,使用多态,方法就可以用一个

public void feed(Animal an,Food food) {

an.eat();

food.showName();

}

}

package com.swing;

import javax.swing.*;

/***************

* 作者:T.song

* 功能:多态演示

*

* *****************/

public class grap extends JFrame{

public static void main(String[] args) {

Master master = new Master();

master.feed(new Dog(),new Bone());

}

}

多态注意事项:

java允许父类的引用变量引用它的子类的实例(对象)

Animal animal = new Cat();

这种转换时自动完成的。

抽象、封装、继承、多态--基本理解相关推荐

  1. java封装继承多态的理解_深入理解Java封装、继承、多态

    一:封装 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,常见的实现方式就是:getter.setter. 封装遵循了"开闭原则&qu ...

  2. java封装继承多态的理解_用最傻瓜式的方法理解Java中的封装、继承和多态

    说到java中面向对象的封装.继承和多态,很多人会说这么简单这么入门的东西一直讲干嘛,虽然是基础,但是我们要明白,所有东西都是要在基础上发展的,没有基础就去学其他的,那么你肯定是很容易失败的,那么应该 ...

  3. 小白理解——封装继承多态

                                      一.封装 是什么:首先是抽象,把事物抽象成一个类,其次才是封装.对外表示为一个对象,隐藏对象的属性和动作实现的细节,仅对外公开接口. ...

  4. Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态

    Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...

  5. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  6. c语言编程 菲薄拉,C语言设计模式-封装-继承-多态

    快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...

  7. 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)

    面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...

  8. 面向对象 编程及面向对象三大属性:封装 继承 多态

    面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...

  9. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  10. 白话文带你了解 封装 继承 多态

    这里讲的仅仅是带你理解 封装 继承 多态 染好您可以移步去别的文章学习具体的实现 (只是个人理解 您可以不爱,请别伤害哦!) 首先你要知道 java是面向对象的,说白了就是我拿你当个人,请认清你的地位 ...

最新文章

  1. c语言日期星期程序,C语言程序设计: 输入年月日 然后输出是星期几
  2. Hulu直播服务难点解析(一):系统需求
  3. MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
  4. Java EE 课程作业(second)-- 企业级应用和互联网应用的区别
  5. keras 张量切片
  6. Javascript滑动菜单(一)
  7. dll中使用dialogbox_玩游戏丢失dll文件别着急 认识这些就妥了
  8. 高德地图——一款功能强大的APP
  9. 重庆铜梁中学空调计量项目远程预付费电能管理系统的设计与应用
  10. IDC 机房空调问题解决方案
  11. 手把手带撸Junior AlphaGo算法「AI工程论」
  12. Homography 单应性变换详解
  13. 人脸识别活体检测的几种方法
  14. java nginx 502_Nginx 502 Bad Gateway错误的解决方案
  15. 在上海,你可以直接用高德地图打一辆无人驾驶出租车去上班了
  16. java 自行车_JAVA 2020款山地车盘点
  17. 使用log4j接管tomcat日志
  18. 数据结构与算法常见笔试题
  19. tab s2 android 8,mini 3一边去!三星GalaxyTab S2 8.0评测
  20. 硬盘 U盘 的SN 号码 javascript 读取 PID,VID,SN信息

热门文章

  1. C - Social Distance CodeForces - 1367C
  2. python怎么把一个文件夹内的文件复制到另外一个文件夹(进阶重命名复制)
  3. python 实例 cadu_求CAD实例
  4. QT/C++——主窗口和事件处理
  5. MySQL 数据库存储引擎
  6. sublimelinter php 语法不起作用,sublime安装插件sublimeLinter不起作用解决办法
  7. 老大让我优化数据库,我上来就分库分表,他过来就是一jio
  8. macd的python代码同花顺_同花顺MACD金叉买点主图指标公式
  9. 使用Python做接口测试
  10. 预测分析 Python ARIMA模型预测(学习笔记)