【编程语言】Java中的类和对象learn by Imooc

来源:互联网 发布:酷开电视直播软件 编辑:程序博客网 时间:2024/06/03 23:41
 一、什么是类和对象
     * 类是模子,确定对象将会拥有的特征(属性)和方法
     * 类的特点:
     *     类是对象的类型
     *     具有相同属性和方法的一组对象的集合
     * 对象的属性
     *     属性-对象具有的各种特征
     *     每个对象的每个属性都有用的特定值
     * 对象的方法
     *     方法-对象执行的操作(能干什么)
     * 类和对象的关系
     *     类是抽象的概念,仅仅是模板

     *     对象是一个你能够看得到,摸得着的具体实体


二、 如何定义Java的类
     * 1、类的重要性:所有Java程序都已类Class为组织单元
     * 2、什么是类
     *     类是模子,确定对象将会拥有的特征(属性)和方法
     * 3、类的组成:属性和方法
     * 4、定义一个类的步骤
     *     a、定义类名 public class 类名{
     *     b、编写类的属性    //定义属性部分
     *                 属性1的类型
     *     c、编写类的方法    //定义方法部分
     *                 方法1

     */

//1.定义一个类public class ClassAndObject {//2.属性(成员方法)有什么float screen;float cpu;float mem;//3.方法  干什么void call(){System.out.println("Telphone有打电话的功能!");}void sendMessage(){System.out.println("screen:"+screen+" cpu:"+cpu+" mem:"+mem+" Telphpne有发短信的功能!");}/** * Java对象 * 使用对象的步骤 * 1、创建对象: * 类名 对象名 = new 类名(); * ClassAndObjec phone = new ClassAndObject(); * 2、适用对象 * 引用对象的属性:对象名.属性 * phone.screen = 5;//给screen属性赋值5 */public static void main(String args[]){//ClassAndObject phone = new ClassAndObject();phone.call();phone.sendMessage();//1.给实例变量赋值phone.screen = 5.0f;phone.cpu = 1.4f;phone.mem = 2.0f;//2.调用对象的方法phone.sendMessage();}}
三、成员变量和局部变量
     *
     * 1、成员变量
     *     在类中定义,用来描述对象将要有什么
     * 2、局部变量
     *     在类的方法中定义,在方法中临时保存数据
     * 局部变量:定义在方法内部->只能在当前方法使用
     * 成员变量:本类方法,其他类的方法->使用
     * 区别:
     *     1)、作用域不同
     * 局部变量的作用域仅限于定义它的方法
     * 成员变量的作用域在整个类内部都是可见的。
     *     2)、初始值不同
     * java会给成员变量一个初始值
     * 不会给局部变量初始值
     *     3)、在同一个方法中,不允许有同名局部变量
     *     在不同的方法中,可以有同名局部变量
     *  4)、两类变量同名时,局部变量具有更高的优先级(就近原则)
   

int var;//成员变量void Test(){int localVar = 10;//局部变量System.out.println("var:"+var);System.out.println("localVar"+localVar);}void Test1(){//System.out.println("localVar"+localVar);}public static void main(String args[]){Variable var = new Variable();var.Test();}
四、构造方法
    1.使用new+构造方法 创建一个新的对象
    2.构造方法是定义在Java类中的一个用来初始化对象的方法
    构造方法与类名同名,且没有返回值
    构造方法的语句格式
    public 构造方法名([可以指定参数]){
            //初始化代码
        没有返回值类型    方法名与类名相同
    }

         //main:public static void main(String args[]){//通过无参的构造方法可以创建对象ConstructionMethod phone = new ConstructionMethod();//通过有参的构造方法也可以创建对象,并给对象中的实例变量赋初值ConstructionMethod phone2 = new ConstructionMethod(5.0f, 1.4f, 2.0f);}//无参构造方法:public ConstructionMethod(){System.out.println("无参构造方法被执行了");}//有参构造方法:public ConstructionMethod(float newScreen,float newCpu,float newMem){screen = newScreen;cpu = newCpu;mem = newMem;System.out.println("有参的构造方法被执行了!");}

 * 5.没有指定构造方法时,系统会自动添加无参构造方法
 * 6.当有指定构造方法,无论是有参、无参的构造方法,系统都不会自动添加无参的构造方法
 * 7.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法

 * 8.构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值


五、静态变量、静态方法        

public class StaticVariable {//static修饰的变量为静态变量,所有类的对象共享hobbystatic String hobby = "原本imooc";//使用static关键字声明静态方法public static void print(){System.out.println("静态方法");}public static void main(String[] args) {// TODO Auto-generated method stub/** * 静态变量: * Java中被static修饰的成员成为静态成员或类成员。它属于整个类所有 * 静态成员可以使用类名直接访问,也可以使用对象名进行访问 * 使用static可以修饰变量、方法和代码块 *///静态变量可以直接使用类名来访问,无需创建类的对象System.out.println(StaticVariable.hobby);//创建类的对象StaticVariable svar = new StaticVariable();System.out.println(svar.hobby);//使用对象名的形式修改静态变量svar.hobby = "已修改hello";//再次使用类名访问静态变量,值已被修改System.out.println(svar.hobby);/** * 静态方法: * 直接使用类名调用静态方法 * 也可以通过对象名调用,当然推荐使用类名调用的方式 *///类名调用静态方法StaticVariable.print();//对象名调用StaticVariable svar_2 = new StaticVariable();svar_2.print();}}public class StaticSet {/** *  * Java中的Static使用静态初始化块 * 通过初始化块进行数据赋值 * 类的声明中,可以包含多个初始化块,当创建类的实例时,就回依次执行这些代码块 * 静态初始化块(使用static修饰初始化块) * 静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量 * 静态初始化块先执行——>普通初始化块-->构造方法 */int name1;int name2;//定义一个成员变量static int name3;public StaticSet(){//通过初始化块为成员变量赋值,构造方法{name1 = 91;System.out.println("通过构造方法为变量name1赋值。");}}//初始化块{name2 = 92;System.out.println("通过初始化块为变量name2赋值");}static{//静态初始化块name3 = 93;System.out.println("通过静态初始块为静态变量name3赋值");}public static void main(String args[]){StaticSet sSet = new StaticSet();System.out.println("name1:"+sSet.name1);System.out.println("name2:"+sSet.name2);System.out.println("name3:"+name3);StaticSet sSet2 = new StaticSet();}


0 0