面向对象的程序设计:

  • 1. 基本特征:抽象性,封装性,继承性,多态性。
  • 2. 类及成员的访问控制:private:同一类中;  default:同一包中;  protected:子类中;  public:全部;
  • 3. 继承 --> [访问控制修饰符] class <子类名> extends <父类名> { 子类体 }
    • 规则:

      • 1) 不支持多重继承。
      • 2) 只继承非private成员变量及方法。
      • 3) 子类会覆盖同名的父类函数。
      • 4) 可以实现子类到父类的"向上转型",实现多态。
  • 4. super关键字:可以访问被子类成员隐藏的父类成员,也可以调用父类的构造方法。
    • 构造方法调用规则:

      • 1) 按继承关系自上而下调用。
      • 2) 如果子类没有构造方法,那么会默认调用父类的无参构造方法。如果父类没有无参的构造方法,则会出错。
      • 3) 如果子类有构造方法,则先执行父类的构造方法,在执行子类的构造方法。
      • 4) 若用super调用含参数的构造方法,则必须写在首句。
  • 5. 多态:子类对象可以替代父类对象使用,即先声明父类的对象,再用子类实例化,便可以访问子类的同名方法(不包括子类的属性)。
    • 主要分为方法的重载和覆盖:
    • --> 方法重载的规则:参数的个数不同、参数的类型不同、或参数的顺序不同,与返回值无关。(发生在同一类中)
    • --> 方法覆盖的规则:子类对父类方法进行重定义,但方法名、返回值和参数形态完全一样,且不能缩小访问权限。(发生在继承中)
  • 6. 对象造型:对象以父类声明,对子类的新加入成员访问受限,则可以使用强制类型转换的方式,恢复对子类成员的访问权限。
    • 条件:

      • 1) 子类到父类的类型转换可以隐式完成。
      • 2) 在多态的情况下,从父类到子类的转换一定需要造型。
      • 3) 无继承关系的引用类型之间的转换是非法的。
  • 7. instance of:用于检测一个对象的真正类型,包括其子类,父类。
  • 8. 协变返回类型:即允许子类重写时修改方法的返回值,但一定是重写前返回值类型的子类或实现类。
  • 9. 方法重载与多重匹配:由转换开销决定,一般往更复杂的方向转换时开销较少。(如 short可以匹配byte,也可以匹配int,此时会优先匹配int)

高级类特性:抽象类,接口,嵌套类和枚举类型:

  • 1. 抽象类:[访问控制修饰符] abstract class <类名> {

        成员变量;

        一般方法(){}

        抽象方法();

      }

    • 规则:

      • 1) 可以包括具体的方法,也可以包括抽象方法。
      • 2) 抽象方法只能写在抽象类内。
      • 3) 抽象类可以由构造方法,但是没有实例,只能通过子类进行实例化。
      • 4) 对于类,不能同时使用final与abstract来声明;对于成员方法,不能同时使用static与abstract声明。
  • 2. 接口:[访问控制修饰符] interface <接口名> [extends <父接口名列表>] {

        常量;

        抽象方法();

      }

    • 规则:

      • 1) 可以继承多个父接口。
      • 2) 默认所有成员变量都是public,static和final的。
      • 3) 默认所有成员方法都是public和abstract的。
      • 4) 接口只包括常量定义和抽象方法。
      • 5) 接口的访问权限只有public和default。
    • 特点:接口可以多重实现,也可以多重继承。
    • 与抽象类的区别:
      • 1) 多重继承。
      • 2) 抽象类可以存在包含具体实现的成员方法,而接口则没有。
      • 3) 接口不是类体系的一部分。
      • 4) 具有可插入性。
    • 如果:
      • (1) 父类已经有实现的同名方法。
      • (2) 这个类是抽象类。
    • 这时,不需要实现接口中的所有方法。
  • 3. 嵌套类:与成员方法类似,在嵌套类中可以访问其他外层类的成员,包括private成员。
public class TestInners {
public static void main(String[] args) {
A a = new A();
A.B b = a.new B();  //B为内部类,需要依赖A的对象才能实例化
b.mb();
}
}
    • 匿名内部类:
public class TestAnnoymous2 {
public static void main(String[] args) {
TestAnonymous2 ta = new TestAnonymous2();
ta.test(new Swimmer(){  //使用匿名内部类,实现了Swimmer接口的swim方法
public void swim() {
System.out.println("I’m Swimming!");
}
});
}
public void test(Swimmer swimmer) {
swimmer.swim();
}
} interface Swimmer {
public abstract void swim();
}
  • 4. 泛型:[访问控制修饰符] class 类名<参数类型列表> [extends] [implements] {}  --> 实现了类型参数化,避免了强制类型转换。(之后会详细展开)
  • 5. 异常处理:所有的异常类都实现了Throwable接口。分为Error和Exception两种类型。Error是指JVM系统内部错误,资源耗尽(严重)。Exception又分为编译时异常和运行时异常,一般是由变成错误或偶然的外在因素导致。(之后会详细展开)
    • 异常举例(不全):

      • LinkageError: .class文件在连接时不存在(被移动或者已删除)。
      • VirtualMachineError:应用程序递归太深,栈内存溢出(空间耗尽)。
      • NullPointerException:空指针异常。

Java基础 —— 面向对象的更多相关文章

  1. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  2. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  3. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  4. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  5. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  6. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

  7. Java基础——面向对象

    Hello 大家好,我又来啦,今天我们来说说Java的面向对象. 还记得之前去面试几家公司的实习生职位,大部分面试官都问过我有关面向对象 的问题,不知道以后还会不会问,估计是不会了吧...(:3[▓▓ ...

  8. 九、Java基础---------面向对象封装、继承、多态

    封装 1.1 基本概念  封装(encapsulation)是面向对象三大特征之一,它是指将对象的状态信心隐藏在对象的内部,不允许外部直接进行访问,而是通过该类提供的方法来实现对内部信息的操作和访问. ...

  9. 面试题-Java基础-面向对象

    1.面向对象软件开发的优点有哪些? 代码开发模块化,更易维护和修改.代码复用.增强代码的可靠性和灵活性.增加代码的可理解性.面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会 ...

  10. JAVA基础——面向对象三大特性:封装、继承、多态

    JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...

随机推荐

  1. [原]1856-More is better-基础并查集

    思路:注意n为0的时候输出1,还有内存.这题是数据水了,要不我的Count[ ]数组,开10^5绝对会WA.离散化还没想清楚,想清楚了再更新代码.[水过代码下面是正经的AC代码,其实这道题不用离散化, ...

  2. leetcode:Reverse Linked List

    Reverse a singly linked list. 代码如下: the iterative solution:(c++) /** * Definition for singly-linked ...

  3. java之并发

    一.线程 在java中多线程执行任务,主要有两种方式,一种是通过继承Thread类,重写run方法,优点是比较方便的创建一个线程,缺点是java中每个类只能有一个基类,所有继承了T火热ad类后,就不能 ...

  4. 【转载】正则表达式学习 & ASCII码表

    文章原地址: http://www.jb51.net/tools/zhengze.html <正则表达式30分钟入门教程> 其中有几个地方可以有笔记: \s 匹配任意的空白符 \b 匹配单 ...

  5. 一些数论概念与算法——从SGU261谈起

    话说好久没来博客上面写过东西了,之前集训过于辛苦了,但有很大的收获,我觉得有必要把它们拿出来总结分享.之前一直是个数论渣(小学初中没好好念过竞赛的缘故吧),经过一道题目对一些基础算法有了比较深刻的理解 ...

  6. laravel小抄

    原文地址:http://cheats.jesse-obrien.ca/ Artisan // Displays help for a given command php artisan --help ...

  7. Phar文件

    phar 扩展名文件提供了一种将整个PHP应用程序打包放入一个被称之为phar(PHP archive)的文件从而更加容易便利地发布和安装的方法.就像是java的jar文件有点类似.除了这个功能外,P ...

  8. UVa 11100 The Trip, 2007

    今天的教训:做题要用大块的时间来做,上午做一下,做题做到一半就去忙别的事,那么后面再做的时候就无限CE,WA了.因为你很难或者需要很长时间来找回当时的思路. 题意:就像套瓷娃娃一样,有n个包,大小可能 ...

  9. linux安全体系

    一.   硬件.软件选型 确认需求,分析可能面临的安全问题 记录各硬件寿命.保证散热.确保性能冗余 使用商业正版.开源的软件,不从互联网安装系统,从源头保证系统安全 购买专业售后支持 服务器配置双电源 ...

  10. POJ 2983 Is the Information Reliable? 信息可靠吗 (差分约束,spfa)

    题意:有n个站排成一列,针对每个站的位置与距离关系,现有多个约束条件,约束条件分两种:(1)确定的.明确说明站a距离站b多少个单位距离.(2)不确定的.只知道a在b的左边至少1个单位距离.  根据已知 ...