面向对象的三条主线:

一、类及类的成分

1.类与类的关系:

java程序是关注于类的设计。

类从代码的角度:并列关系!

从执行、设计的角度:关联关系、继承关系、聚合关系

class A{

}

class B{

A  a = new A();

}

2.类的成分:属性   方法  构造器  代码块  内部类

2.1 属性:

①变量的分类:成员变量(属性 Field)vs 局部变量(方法的形参、方法内部、代码块内部)

②数据类型:基本数据类型(8种,不同的数据类型对应不同的默认初始化值vs 引用数据类型(数组、类、接口 默认初始化值为null)

③属性的声明格式:修饰符  数据类型  变量名 = 初始化值;//java是强数据类型的语言

④对属性的赋值的操作:默认初始化、显式的初始化、代码块的初始化、构造器的初始化、调用方法或属性进行赋值

2.2 方法  

①格式:修饰符(其它的关键字:static/final/abstract)返回值类型 方法名(形参列表){

//方法体 }

②方法的重载(overload)   vs  方法的重写(override overwrite)

③ 方法的参数传递机制:值传递(难点)

2.3构造器  

①构造器的作用:1.创建类的对象  2.初始化对象的成员变量

②构造器也是可以重载的。

2.4 代码块

①主要作用:用来初始化类的成员变量

②分类:静态的代码块  vs  非静态的代码块

2.5 内部类

①分类:成员内部类(static的成员vs 非static的成员)vs 局部内部类(方法内部声明的类)

②掌握 :如何创建成员内部类的对象(如:创建Bird类和Dog类的对象)、如何区分调用外

部类或内部类的变量(尤其是变量重名时)、局部内部类的使用 (见TestInnerClass1.java)

3. 类的初始化(创建类的对象)

3.1 如何创建类的对象。

如: Person p = new Person();  Date d = new Date();

3.2 内存解析:

①栈:局部变量、对象的引用名、数组的引用名

堆:new 出来的“东西”

方法区:(字符串常量池)

静态域:存放类中静态的变量

②如何理解创建的对象在内存中加载的过程(理解)

3.3 子类对象实例化的全过程: SubClass sc = new SubClass();

二、面向对象的三大特性:

1.封装性:

① 通过私有化类的成员变量,通过公共的getter和setter方法来调用和修改

② 还可以对类的其他结构进行“封装”

③ 权限修饰符:public protected 缺省 private

2.继承性:

①通过让一个类A继承另一个类B,就可以获取类B中的结构(主要的:属性、方法、构造器)。子类:类A  父类:类B

②java中的类的继承性:单继承的。

3.多态性:

①体现:方法的重载与重写;子类对象的多态性  Person p = new Student();

②子类对象多态性的使用:虚拟方法调用。

③向上转型  向下转型 Student s = (Student)p;

//建议在向下转型之前: if ( p instanceof Student)避免出现ClassCastException的异常

三、其它关键字:

1.this:修饰属性、方法、构造器。表示:当前对象或当前正在创建的对象。

2.super:修饰属性、方法、构造器。显式的调用父类的相应的结构,尤其是子父类有重名的方法、属性

3.static :修饰属性、方法、代码块、内部类。随着类的加载而加载!

4.final:修饰类、属性、方法。表示“最终的”

5.abstract:修饰类、方法

6. interface:表示是一个接口,(接口是与类并列的一个结构)。类与接口之间同时“implements”发生关系。

7.package import …

8.abstract:不能修饰属性、构造器、不能与final static private共用。

Java——面向对象知识总结的更多相关文章

  1. java面向对象知识整理(一)

    1.面向对象思想 概述:面向对象是相对于面向过程而言的,面向过程强调的是功能,面向对象强调的是将功能封装进对像,强调具备功能的对象. 特点:(1)符合人们思考习惯的一种思想. (2)将复杂的事情简单化 ...

  2. Java 面向对象知识扩展

    四种权限修饰符 java有四种权限修饰符:public > protected > (default) > private   public protected default pr ...

  3. Java基础知识➣面向对象(八)

    概述 Java和C#都是面向对象语言,面向对象编程是目前高级语言习惯的编程模式,与C++编写过程编程而言,面向对象使用起来高效.灵活:面向对象的三个特征:封装.继承和多态. Java面向对象 1.类封 ...

  4. 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  5. Java基础知识_毕向东_Java基础视频教程笔记(5-10 面向对象)

    06天-05-面向对象(帮助文档的制作javadoc):java文档生成命令:javadoc -d filepatn demo.java   -author -version(可选)一个类中默认会有一 ...

  6. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  7. Java程序设计 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353  姓名:李海空  学号:20135329 成绩:             指导教师:娄嘉鹏 ...

  8. Java面向对象的封装

    封装是Java面向对象的三大特性之一,通常我们是通过包管理机制同时对类进行封装,隐藏其内部实现细节,通常开发中不允许直接操作类中的成员属性,所以属性一般设置为私有权限private,类中一般会给出一些 ...

  9. Java面向对象的三大特征

    Java面向对象的三大特征 java面向对象的三大特征:“封装.继承.多态”.更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. ...

随机推荐

  1. java--CharAt,StartWith

    public class CharAtStartWithDemo { public static void main(String[] args){ //jdk8 testCharAt();//1 t ...

  2. ambari安装hadoop

    前言 hadoop除了社区版之外,还有两个主流的分支,一个是cdh版本,一个是hdp版本,其中ambari是hdp版本的部署工具 1.ambari安装准备 https://docs.hortonwor ...

  3. python2和python3中TestSuite().addTest的区别

    Python2中unittest.TestSuite().addTest()的参数是这样的:unittest.TestSuite().addTest(TestFun("test_nam&qu ...

  4. java基础学习笔记一

    一.JAVA访问控制修饰符 用于控制类中成员的可见性 1.public(公有):在任何地方可以访问 2.protected(受保护的):子夫类(即使字父类不在同一包)和本包中可以访问 3.defaul ...

  5. js插件-简单拖拽

    前端开发的时候,有好多地方用到拖拽效果,当然 http://jqueryui.com/draggable/  是个不错的选择,but 我是个打破砂锅问到底的人,抽点时间用js小小的实现了类似的插件,话 ...

  6. 配置框架spring和SpringDataJpa整合----员工是爹

    <!-- 1.dataSource 配置数据库连接池--> <bean id="dataSource" class="com.mchange.v2.c3 ...

  7. 基于c语言数据结构+严蔚敏——线性表章节源码,利用Codeblocks编译通过

    白天没屌事,那我们就来玩玩线性表的实现吧,快要失业了,没饭吃了咋整哦 题目描述假设利用两个线性表LA和LB分别表示两个集合A和B(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B ...

  8. freemark 语法

    我们通过后端model. addAttribute() 传递到前端的值来进行界面渲染 它的循环语句 和其他的有点不同: if 循环 <#if 条件语句> </#if> if  ...

  9. java 多级图的最短路径

    求最短路径众所周知有Dijistra算法.Bellman-ford等,除了这些算法,用动态规划也可以求出最短路径,时间复杂度为O(n^2), 跟没有优化的Dijistra算法一样(优化后的Dijist ...

  10. Java + selenium Timeout接口用法介绍

    上一篇介绍了关于如何启动浏览器的方法.这篇文章要介绍一下,上一篇代码中关于等待时间的接口方法,代码如下: driver.manage().timeouts().pageLoadTimeout(5, T ...