Java基础 —— 面向对象

面向对象的程序设计:

  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:空指针异常。

时间: 2024-10-07 08:08:05

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

Java基础——面向对象练习题

1.建立一个图形接口,声明一个面积函数.计算圆形和矩形的面积.注:体现面向对象的特征,对象值进行判断,用异常处理.不合法的数值需要出现"这个数值是非法的提示",不再进行运算. 2.在一个类中编写一个方法,这个方法搜索一个字符数组是否存在某个字符.如果存在则返回这个字符在数组中第一次出现的位置,否则返回-1.需要搜索的字符数组和字符都一参数的形式传递给该方法.如果传入的数组为NULL,则应该抛出IllegalArgumentException异常. 3.补充compare函数代码. 4.

java基础面向对象之封装

java基础面向对象之封装 2017-01-15 封装 1)封装性就是保证类内部被外部类不可见 2)所有属性都必须使用private关键字声明 3)封转后的属性如果要被外部所访问就必须实现set和get方法 例如: 使用了private声明的属性只有在自己的类是可见的 1 class Book{ 2 private String title ; //使用private声明的属性 3 private int price ; 4 } 5 public class PrivateDemo1 { 6 p

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

java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 ?封装性:保护内部结构的安全性 ?继承性:在已有的程序结构上扩充新的功能 ?多态性:在某一个该娘范围内满足 2)面向对象开发分为以下几个步骤: OOA(面向对象分析) OOD(面向对象设计) OOP(面向对象编程) 2.类与对象 1)了解类与对象的关系 ?认识类与对象 类与对象是整个面向对象之中最基础的组成单元,类是共性的一个集合,而对象是某一

java基础面向对象之this关键字

java基础面向对象之this关键字 2017-02-14 this的核心概念: this关键字在java中表示当前对象. this关键字的主要用法: 在java中利用this关键字可以实现类属性的调用,类方法的调用,当前对象. 一.调用属性 1 class Book{ //Book类 2 private String title ; //title属性 3 private int price ; //price属性 4 5 public Book(String t , int p){ 6 ti

Java基础---面向对象(1)

Java基础--面向对象 1.什么是面向对象 面向对象是基于面向过程的编程思想. (1).面向过程: 面向过程强调的是每一个功能的步骤,强调的是如何实现的步骤. (2).面向对象: 面向对象强调的是对象,然后由对象去掉用功能,强调的是做这一个事情的结果. 2.面向对象的思想特点 (1).是一种更加符合我们思想习惯的逻辑. (2).可以将复杂的事情简单化 (3).将我们从执行者变成了指挥者. 3.面向对象举例 我们一洗衣服为例: 面向过程的实施步骤: 找出脏衣服--->放入盆中---->放入洗衣

Java基础---面向对象(2)

Java基础-面向对象(封装概述) 1.面向对象封装的基本概述和使用 (1).什么是封装的思想 定义一个基本的student类: 成员变量:name,age 成员方法:show()方法 测试类: StudentDemo 创建student对象,并使用里面的方法 我们在定义这一个案例的过程中,我们发现一个问题: 通过对象去给成员变量赋值,可以赋值一些非法的数据,如年龄我们定义的是int类型,也就是说我们赋值200也是合理的,但是在实际当中,这一个是不合理的,我们应该需要做一个限制,应该是 这样子,

Java基础面向对象

Java基础第七天 面向对象思想 类与对象及其使用 对象的内存图 成员变量和局部变量的区别 匿名对象 封装(private) this关键字 构造方法 static关键字 面向对象思想引入 前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装到方法中,需要遍历时,就调用相应的方法即可,提高代码的复用性.在对数组遍历的基础上继续增加需求,比如获取最值,数值逆序等,同样需要将这些功能封装到相应的方法中.这样继续封装会发现方法越来越多,于是就想能不能将这些方法继续进行封装呢?通过前面的

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

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前

Java基础--面向对象

------- android培训.java培训.期待与您交流! ---------- 面向对象 是一种思想,把复杂事物简单化,把面向过程的执行者变成了指挥者.过程其实就是函数,而对象将函数和一些内容封装.把事物的属性和行为封装成对象,再把对象抽象成类. Java 面向对象的三个特征:封装.继承.多态 类 是一组事物共有特征和功能的描述.是按照面向对象技术进行设计时最小的单位,也是组成项目的最基本的模块.类的概念是抽象的,类似于建筑设计中的图纸,是对于现实需要代表的具体内容的抽象.类只包含框架结

黑马程序员——Java基础---面向对象之继承

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                                                 面向对象之继承  一:继承(extends) (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构.