• 一、面向对象

  • Java中的面向对象与C#的面向对象,本质都是一样。所以对于学过C#的同学理解Java中面向对象的概念就比较轻松。
  • 对象

  • 定义: 万物皆对象,客观存在的事物都称为对象
  • 1、面向对象

  • 定义: 类是模具,确定对象将会拥有的特性(属性)和行为(方法)
  • 特点:
  • A.类是对象的类型
  • B.具有相同属性和方法的一组对象的集合
  • 属性
  • 定义: 有什么就是这个属性
  • 方法
  • 定义: 能干什么(对象操作的执行)
  • 2、Java中如何定义类

  • 1.所有Java程序中都以类(class)为组织单元
  • 2.类有属性、方法
  • 3.如何定义类:
graph LR
如何定义类-->定义类名
如何定义类-->编写类的属性
如何定义类-->编写类的方法
  • 3、如何创建Java对象

类名 对象名=new 类名();
  • 4、Java中成员变量与局部变量

  • 成员变量

  • 在类中定义,用来描述对象将要有什么,整个类内部都可以看到

  • 局部变量

  • 在类的方法中定义,在方法中临时保存数据

  • 区别

  • 1.作用域不同

  • 2.成员变量会默认给一个初始值,不会给局部变量初始值。C#也是如此

  • 3.在同一个方法中,不允许有同名局部变量,在不同方法中,可以有同名局部变量

  • 4.两类变量同名时,局部变量优先调用。C#也是如此

  • 5、构造方法

  • 1.使用new + 构造方法 创建一个新的对象

  • 2.构造方法是定义在Java类中的一个用来初始化对象的方法

  • 3.构造方法与类名相同且没有返回值

  • 4.无参构造方法,如果我们没有指定,系统会自动生成无参构造方法

  • 5.有参构造方法,当我们指定有参构造方法,系统就不会自动生成无参构造方法

  • 6.构造方法的重载,方法名相同,但是参数不同的多个方法,系统调用时候根据参数去调用

  • 7.构造方法不但可以给对象的属性赋值,还可以保证给对象属性赋一个合理的值。(就是加判断条件)

  • 6、静态变量(static)

  • 我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立,然而在某些时候,我们更希望该类的所有对象共享一个成员。这时候需要静态变量

  • 使用static修饰的成员称为静态成员或者类成员,它属于整个类所有,而不是某个对象所有,即被雷的所有对象共享

  • 静态成员可以使用类名直接访问,也可以使用对象名进行访问。推荐使用类名访问

  • 静态成员属于整个类,当系统第一次使用该类时,就会分配内存空间直到类被卸载才进行资源回收

  • 7、静态方法

  • 与静态变量一样,我们也可以使用static修饰方法,称为静态方法或类方法

  • 1.静态方法中可以直接调用类中的静态成员,但不能调用非静态成员

  • 2.若希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量

  • 3.在普通方法中,则可以直接访问同类的非静态变量和静态变量

  • 8、静态初始化块

  • 静态初始化只在类加载时执行,且只会执行一次,同时静态初始化只能给静态变量赋值,不能初始化普通变量

  • Java中有静态初始化块,但是在C#中没有对应的概念

  • Java初始化块是不能接收任何参数的,定义的静态变量可以通过初始化块进行初始化

  • 好处在于:提高初始化块的复用,提高整个应用的可维护性

  • 二、封装

  • 1.封装

  • 定义:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

  • 好处:

  • 1.只能通过规定的方法访问数据

  • 2.隐藏类的实例细节,方便修改和实现

  • 步骤:

  • 1.修改属性的可见性(private修饰)

  • 2.创建getter/setter方法(用于属性的写读)

  • 3.在getter/setter方法中加入属性控制语句

  • 2.使用包管理Java中类

  • 包的作用:1.管理Java文件。2.解决同名文件冲突

  • 定义包:package包名:包名间可以使用"."号隔开

  • 可以通过import关键字,在某个文件中使用其它文件中的类

  • Java中,包的命名规则是全小写字母拼写

  • 3.Java访问修饰符

修饰符 本类 同包 子类 其他
private Y N N N
默认 Y Y N N
protected Y Y Y N
public Y Y Y Y
  • 4.Java中this关键字

  • this关键字代表当前对象

  • 封装对象属性

  • 5.Java中内部类,C#也可以定义内部类

  • 就是定义在另一个类里面的类,与之对应,包含内部类的类被称为外部类

  • 作用:

  • 1.可以提供了更好的封装,可以把内部类隐藏在外部之内,不允许同一个包中的其他类访问

  • 2.内部类可以直接访问外部类的所有数据,包含私有数据

  • 内部类的划分:

  • 1.成员内部类

  • 2.静态内部类

  • 3.方法内部类

  • 4.匿名内部类

  • 注意点:

  • 外部类不能访问内部类中的成员方法,如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法。如果要访问外部类成员则要加this

  • 6.Java中静态内部类

  • 1.静态内部类不能直接访问外部类的非静态成员,但可以通过

new 外部类().成员变量
  • 2.如果外部类的静态成员与内部类的成员名称相同,可通过
类名.静态成员
  • 3.创建静态内部类的对象时,不需要外部类的对象,可以通过直接创建
内部类 对象名=new 内部类();
  • 7.Java方法内部类,C#不允许

  • 方法内部类就是内部类定义在外部方法中,方法内部类只在该方法中内部可见,不能使用修饰符及static

  • 三、继承

  • 1.继承

  • 继承是类与类的一种关系,是一种"is a"的关系。父类 基类 | 子类 派生类

  • Java中的继承是单继承,C#也是单继承

  • 语法规则:

class 子类 extends 父类
  • 2.方法的重写

  • 如果子类对于继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法

  • C#中方法重写是用override关键字表示,Java中是在方法上注解的方式@Override

  • 语法规则:

  • 1.返回值类型

  • 2.方法名

  • 3.参数类型及个数

  • 都要与父类继承的方法相同,才叫方法的重写

  • 3.Java继承初始化顺序

  • 初始化相当于执行类的构造方法

  • 1.初始化父类再初始化子类对象

  • 2.先执行初始化对象中的属性,再执行构造方法中的初始化

public class Person {
private int age = 10; Person() {
age = 20;
} public static void main(String[] args) {
System.out.println(new Person().age);//20
}
}
  • 4.final关键字

  • 使用final关键做标识有"最终的"含义

  • final可以修饰类、方法、属性、变量

  • final修饰类,则该类不允许被继承。类似C#.sealed

  • final修饰方法,则该方法不允许被覆盖

  • final修饰属性,则该类的属性不会进行隐式初始化,或在构造方法中赋值(两者选其一)

  • final修饰变量,则该变量的值只能赋值一次,称为常量

  • 5.super关键字

  • 在对象内部使用,可以代表父类对象

  • 1.访问父类的属性

  • 2.访问父类的方法

  • 使用场景

  • 1.子类的构造的过程必须调用其父类的构造方法

  • 2.隐式程序默认调用无参构造方法

  • 6.Object类

  • Object是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类

  • 1.toString()方法

  • 在Object类中定义的toString()方法时返回的对象的哈希code码。即地址

  • 2.equals()方法

  • 比较的是对象的引用是否执行同一个快内存地址

  • 类对象与类的对象的区别

  • 类对象是类对象的类型getclass();

  • 类的对象是关注的数据信息

  • 四、多态

  • 1.多态(对象的多种形态)

  • 1.引用多态

  • 父类的引用可以指向本类对象

Animal obj=new Animal();
  • 父类的引用可以指向子类对象(里氏替换原则)
Animal obj=new Dog();
  • 2.方法多态

  • 1.创建本类对象时,调用的方法为本类对象

  • 2.创建子类对象时,调用的方法为子类重写的方法或继承的方法

  • 2.引用类型转换

  • 向上类型转换(隐式/自动类型转换),是小类型到大类型的转换。不存在风险

  • 向下转换(强类型转换),是大类型到小类型的转换

  • 使用instanceof运算符,来解决引用对象的类型

  • 3.抽象类(abstract)

  • 应用场景:

  • 1.在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但是无法准确知道这些子类如何实现这些方法

  • 2.从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性

  • 作用

  • 不关注子类的实现,但是约束子类的设计

  • 使用规则

  • 1.abstract定义抽象类

  • 2.abstract定义抽象方法,只要声明,不需要实现

  • 3.包含抽象方法的类是抽象类

  • 4.抽象类中可以包含普通的方法,也可以没有抽象方法

  • 5.抽象类不能直接创建

  • 五、接口

  • 1.定义

  • 类的一种具体实现体,而接口定义了某一批所需要遵守的规范,接口不关心这些类的内部数据,也不关系这些类里的方法的实现细节,它只是规定这些类必须提供某些方法

  • 和类定义不同,定义接口不再使用class关键字,而是使用interface关键字

  • 2.语法格式

[修饰符] interface 接口名 [extends 父接口1,父接口2,...]
{
零个到多个常量定义
零个到多个抽象方法的定义
}
  • 接口就是用来被继承,被实现,修饰符一般建议使用public

  • 接口中的方法只能是抽象方法,即使定义时不添加public abstract 修饰符,系统也会自动加上

  • 3.实现接口

  • 一个类可以实现一个或多个接口,实现接口使用implements关键字,Java中一个类只能继承一个类,是不够灵活的,通过实现多个接口可以做补充。

  • 如果需要继承父类,继承父类必须在实现接口之前

Java基础知识(贰)的更多相关文章

  1. Java基础知识(壹)

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

  2. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  3. Java基础知识系列——String

    最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...

  4. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. java基础知识梳理

    java基础知识梳理 1 基本数据类型

  7. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  8. Java 基础知识(一)

    Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...

  9. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  10. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

随机推荐

  1. MVVM模式解析和在WPF中的实现(三)命令绑定

    MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  2. DDD CQRS架构和传统架构的优缺点比较

    明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...

  3. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  4. 按需加载.js .css文件

    首先,理解按需加载当你需要用到某个js里面的函数什么鬼,或者某个css里的样式的时候你才开始加载这个文件. 然后是怎样实现的,简单来说就是在js中动态的createElem<script> ...

  5. Android数据存储之Android 6.0运行时权限下文件存储的思考

    前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...

  6. CentOS7 重置root密码

    1- 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4 - 现在按下 Con ...

  7. JavaScript模仿块级作用域

    avaScript 没有块级作用域的概念.这意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的,来看下面的例子: function outputNumbers(count){ for ( ...

  8. Windows 常用运行库下载 (DirectX、VC++、.Net Framework等)

    经常听到有朋友抱怨他的电脑运行软件或者游戏时提示缺少什么 d3dx9_xx.dll 或 msvcp71.dll.msvcr71.dll又或者是 .Net Framework 初始化之类的错误而无法正常 ...

  9. Unable to create the selected property page. An error occurred while automatically activating bundle net.sourceforge.pmd

    解决方案: 在命令行到eclipse目录下使用 eclipse.exe -clean

  10. AEAI DP V3.7.0 发布,开源综合应用开发平台

    1  升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...