java学习笔记(四)面向对象

一、形參长度可变的方法

当传入被调用的函数參数数量不确定时,在方法最后一个形參的类型后加上三个点号(...),表明该形參能够接受多个參数值。多个參数值被当做数组传入,这些參数必须为指定的类型。

package wbb.java.JavaObject;

/**
 * Created with IntelliJ IDEA.
 * User: wbb
 * Date: 14-7-17
 * Time: 下午4:26
 * To change this template use File | Settings | File Templates.
 */
public class MulParams {
    public static void main(String[] args) {
        mulFun("篮球", "足球");
    }

    public static void mulFun(String... ballName) {
        for(String name : ballName) {
            System.out.println(name);
        }
    }
}

二、方法重载

1、同一个类中方法名同样,方法中的參数类型或者參数个数不同就叫方法重载;

2、方法的修饰符、返回值不同不是方法重载;

三、superkeyword的使用

super关键使用的注意事项:

1、假设父类中的成员变量和方法被定义为private类型。那么子类永远无法訪问他们,假设採用super.name的形式去訪问父类的private类型的var变量。就会导致编译错误。

2、仅仅能在构造方法或实力方法内使用superkeyword,而在静态方法和静态代码块内不能使用superkeyword。

package wbb.java.JavaObject;

/**
 * Created with IntelliJ IDEA.
 * User: wbb
 * Date: 14-7-21
 * Time: 上午9:31
 * To change this template use File | Settings | File Templates.
 */
public class OverWrite {
    public static void main(String[] args) {
        B b = new B();
        b.test();
    }
}

class A {
    public String name = "wbb";
    public void test() {
        System.out.println("父类test方法");
    }
}

class B extends A {
    public void test() {
        System.out.println(super.name);
        super.test();
    }
}

输出结果:wbb

父类test方法

四、多态

1、假设把引用变量转换为子类类型称之为向下转型。

2、假设把引用变量转换为父类类型称之为向上转型;

五、toString()方法

Object类提供的toString方法总是返回该对象实现类的类名+@+hashCode值,这个返回值并不能真正实现“自我描写叙述”的功能,假设用户想实现“自我描写叙述”的功能,必须重写Object类的toString方法。

package wbb.java.JavaObject;

/**
 * Created with IntelliJ IDEA.
 * User: wbb
 * Date: 14-7-23
 * Time: 上午9:31
 * To change this template use File | Settings | File Templates.
 */
public class ToString {
    public static void main(String[] args) {
        Animal animal = new Animal("忠犬八公");
        System.out.println(animal);
    }
}

class Animal {
    private String name;
    public Animal(String name) {
        this.name = name;
    }

//    public String toString() {
//        return "这条狗的名字为" + name;
//    }
}

输出结果为:[email protected]

去掉凝视代码重写toString方法就能实现对象的自我描写叙述:这条狗的名字为忠犬八公

六、单例类

假设一个类始终仅仅创建一次。那么称这个类为单例类。为什么要使用单例类,由于有的对象仅仅须要创建一次就能够了,创建多了浪费系统的开销,比方说在一个小房间里面一台空调就能起到非常好的制冷效果,假设放置两台或者多台就有点浪费了。

package wbb.java.JavaObject;

/**
 * Created with IntelliJ IDEA.
 * User: wbb
 * Date: 14-7-25
 * Time: 下午3:30
 * To change this template use File | Settings | File Templates.
 */
public class Singleton {
    //定义一个静态的变量用于缓存创建过的实例
    private static Singleton instance;

    //为了避免其它类自由创建该类的实例。把构造器声明为私有的,仅仅有在该类内部才干调用构造器
    private Singleton(){}

    // 提供一个public方法作为该类的訪问点,而且必须使用static修饰。

// 由于调用该方法之前还不存在对象。因此调用该方法的不可能是对象,仅仅能是类。
    // 由于成员变量在静态方法中使用,所以定义的时候用static修饰。
    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

class TestSingleton {
    public static void main(String[] args) {
        Singleton instance1 = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        //输出结果为true,说明两个引用变量指向的是同一个对象
        System.out.println(instance1 == instance2);
    }
}

时间: 2024-10-22 17:29:26

java学习笔记(四)面向对象的相关文章

java学习笔记之面向对象static,final关键字

java学习笔记之面向对象static,final关键字 一.static关键字 1.概述: static静态的,被static修饰的成员属于类,不属于单个对象,被所有对象所共享,存在静态区中,静态的成员优先于对象加载到内存中. 2.statc修饰成员的使用方式:(被static修饰的成员变量有默认值) /* 1.可以通过对象直接使用,不推荐使用 2.通过类名调用静态成员 类名.静态成员变量 类名.静态成员方法 */ 3.static的特点 /* 1.在同一个类中,静态成员只能访问静态成员,非静

Java学习笔记<3>面向对象相关

面向对象的基本思想 从现实世界客观存在的事务出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式,如抽象.分类 继承.聚合.多态等. 类和对象的关系 对象中存储了类规定的数据类型,并且对象可以调用类的方法. java面向对象 <1>对象是java程序的核心,一切皆对象. <2>对象可以看成静态属性(成员变量)和动态属性(方法)的封装体. <3>类是创新同一类型对象的模版,定义了该类型对象应具有的成员变量及方法. 类的定义 成员变量可以用java语言的任何一种

面向对象三大特征之封装与static——(Java学习笔记四)

面向对象     编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一般,具体到抽象 三大特征: 封装 继承 多态 构造器:又叫构造方法(constructor),用于构造类的实例 格式:修饰符 类名(形参列表){ //语句 } 构造器的方法名与类名一致 通过new关键字调用 当没有定义构造方法时,系统会自定义一个无参构造函数 构造方法可以重载 作用:构造该类的对象,

疯狂java学习笔记之面向对象(四) - this关键字

Java中this关键字主要有以下两个方法: 1.this引用 - 可用于任何非static修饰的方法和构造器中,当this用于方法中时,它代表调用该方法的实例/对象;当this用于构造器中时,它代表构造器正在初始化的实例/对象 2.this调用 - 只能在构造器的第一行出现. 如何区分this引用与this调用呢? this引用写法为:this.  ;  而this调用写法为:this(); 例1: 1 class TestThis{ 2 private double weight; 3 pr

【原】Java学习笔记019 - 面向对象

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // 仔细想一想,Animal应该是一个抽象的概念,相对于Animal来说,狗才是具体的概念 6 // Animal的行为也应该算是一个抽象的行为 7 8 // Java中对于这些抽象的概念或是抽象的行为,提供了一个关键字 abstract 来进行修饰 9 10 // 关键字 abstract用在类上,

java学习笔记四:static的几个角落及小谈多态

最近有点事情,没有及时更新笔记,学习不可弃,总结一下最近的学习,其中重点是static的一些应用,多态是一种设计理念,了解较容易,想如火纯清的确不是一件容易的事情. 对于static,主要有两点是我所学习的. 1.首先简单的介绍一下static的定义.static是静态的意思,就是说这个类变量或者类方法不需要实例化就可以使用.使用static的变量是类变量,也成为静态域(static field).这些是static的基本语义,了解了这些,继续向下看. java核心技术(卷一)对于静态有这样一段

Java学习笔记四(代码块 )

1 代码块的分类:java中的代码块是指使用{}括起来的一段代码,根据位置不同可以分为四种: 普通代码块 构造快 静态代码块 同步代码块 今天主要学习前三种代码块,同步代码块在学习到多线程部分的时候再加学习. 2 普通代码块:直接定义在方法中的代码块,如下: public class CodeSpace { public static void main(String args[]){ { int x = 30; System.out.println("普通代码块x="+x); } /

java学习笔记之面向对象多态

面向对象三大特性之多态 一.多态的概念 多态是继封装,继承之后,面向对象的三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的张三同学既是学生也是人,即出现两种形态. java作为面向对象的语言,同样可以描述一个事物的多种形态,java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口) 变量赋值. 父类的引用变量指向子类对象.多态的前提需要有继承关系或者是实现关系,否则没法完成多态.在使用

疯狂java学习笔记之面向对象-定义类、方法、构造器

Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. java程序中,类是最小的程序单位 - 所有的java程序都必须从定义类开始 定义类的语法格式: [修饰符]  class  类名{ //0 ~ N 个 Field 定义 //0 ~ N 个 方法定义 //0 ~ N个 构造器定义 } 一个类中最多只能出现五种成分:Field.方法.构造器 一个类最常见

【原】Java学习笔记014 - 面向对象

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // 面向对象思想 6 7 // 回顾编程语言思想进化之路:从面向过程到面向对象 8 9 // 面向过程 10 // 举例: 11 // 1.冰箱门打开 12 // 2.大象放进去 13 // 3.冰箱门关上 14 // [面向过程的思路的着眼点在于动作的功能,思考打开.放入.关闭均为动作] 15 16