栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java类和对象

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java类和对象

目录

7.1面向对象

7.2类

7.3类的构造方法

7.4静态变量、常量和方法

7.5类的主方法

7.6对象


7.1面向对象

7.1.1对象

对象:静态部分、动态部分

静态部分:属性;动态部分:行为

7.1.2类

类是封装对象的属性和行为的载体。

行为是以方法的形式定义的,属性是以成员变量的形式定义的。所以类包括对象的属性和方法。

根据类抽象出一个实体对象,通过实体对象解决实际问题。

7.1.3 封装

是面向对象编程的核心思想。通过载体——类,将对象的属性和行为封装起来。

7.1.4继承

利用对象之间的共有属性。子类继承父类。

7.1.5多态

父类对象应用于子类的特征就是多态。

依赖于抽象类和借口来实现

7.2类

关键字class来定义。

成员方法的定义:

权限修饰符   返回值类型 方法名(参数类型CHENGYUAN F 参数名){

//方法体

return 返回值;

}

权限修饰符:private、public、protected

 成员方法参数:对象或者基本数据类型变量

成员方法返回值:有,用return关键字,没有用void关键字

返回值:可以为计算结果、其他数值或对象。返回值类型要与方法返回值类型一致。

成员方法可以调用其他成员方法和类成员变量。若方法中有与成员变量(类中变量)同名的局部变量(方法中变量),则方法中对该变量的访问以局部变量进行。

类成员:成员变量和成员方法。

7.2.3权限修饰符

private,public,protected,默认

默认修饰符又称为friendly,是指在定义类或变量的时候不加任何修饰符。这个只有一个包中的类可以调用这个类的成员变量和成员方法。

类的权限设定会约束类成员的权限设定。

Java修饰符权限
访问包位置类修饰符
privateprotectedpublic
本类
同包其他类或子类×
其他包的类或子类××
package com.lzm;
class AnyClass(){
    public  void doString(){     //与void doString()等同,此处doString权限与AnyClass访问权限相同
        ……//方法体
    }
}

 7.2.4局部变量

局部变量: 成员方法内定义的变量。使用时必须进行赋值或者初始化。

7.2.5局部变量的有效范围

从声明到结束为止。不嵌套区域可以定义相同名称相同类型的局部变量。嵌套区域不可以。

7.2.6 this关键字

 this关键字代表本类对象的引用,隐式地用于对象的成员变量和方法。(其他调用一般通过对象.成员变量或者对象.成员方法调用)

当方法中局部变量或方法参数覆盖了成员变量时,通过this调用成员变量。

this还可以作为方法的返回值。

public class Book {
    private String  name;//定义一个String型的成员变量
    public String getName(){    //定义一个getName()方法
        int id=0;       //局部变量
        setName("JAVA");//调用类中其他方法
        return id+this.name;//设置方法返回值
    }
    public void setName(String name){       //定义一个setName的方法
        this.name=name;          //将形参name值赋予类中的成员变量name
    }
    public Book getBook(){        //getBook方法的返回值类型为Book类,方法体中使用return this这种形式将Book类的对象进行返回
        return  this;            //返回Book类引用

    }
}

7.3类的构造方法

构造方法就是与类同名的方法。类自动调用构造方法实例化对象。

特点:没有返回值;名称与本类相同。

public book(){

构造方法体

}

 构造方法中也可以直接赋值成员变量。

若类中没有定义任何构造方法,会自动创建一个。

但若类中定义的构造方法不是无参的,编译器也不会设置一个默认的无参构造方法,此时调动无参构造方法实例化对象时会报错。

this调用类的构造方法。

public class AnyThing {
    public AnyThing(){               //定义无参构造方法
     this("this调用有参构造方法");   //在无参构造方法中使用this关键字调用有参构造方法(只能在无参构造方法的第一句使用this)
        System.out.println("无参构造方法");
    }
    public AnyThing(String name){   //定义有参构造方法
        System.out.println("有参构造方法");
    }

}

7.4静态变量、常量和方法

静态:关键字static修饰

静态成员属于类所有,可以在本类或者其他类中用(类名.静态类成员)来调用(也可通过对象.静态成员调用,但不建议用)。

Java规定方法体内局部变量不可以声明为static。

静态成员同样受约束于:private,public,protected

public class StaticTest {
 final static double PI=3.415;//类中定义静态(static)常量(final)
   static  int id;            //类中定义静态变量
   public  static void method(){ //类中定义静态方法

    }
   public static void  method2(){         //调用静态成员时,通过类名.静态成员调用
       System.out.println(StaticTest.PI);  //调用静态常量
       System.out.println(StaticTest.id); //调用静态变量
       StaticTest.method();//调用静态方法
   }


}

静态方法中不可以用this关键字、不可以直接调用非静态方法。

7.5类的主方法

通过主方法来执行程序。

public static void main(String[] args) {
    //方法体
}

可知:无返回值、只能直接调用静态的其他方法、形参为数组可以使用args.length获取参数个数。

7.6对象

 通过new操作符调用构造方法创建对象。调用new创建对象,对象创建的同时自动调用构造方法中的代码。

Test test=new  Test();

或者:Test test=new  Test("a");

Test:类名;test:类对象;new:创建对象操作符;"a":构造方法的参数

public class CreatObject {
    public CreatObject(){
        System.out.println("创建对象");
    }

    public static void main(String[] args) {
        new CreatObject();  //输出:创建对象
    }
}

7.6.2访问对象的属性和行为

通“对象.类成员”来获取对象属性和行为。

public class TransferProperty {
    int i=47;                                           //定义成员变量
    public void call(){                                 //定义成员方法
        System.out.println("调用call方法");
        for(i=0;i<3;i++){
            System.out.print(i+" ");
            if(i==2){
                System.out.println("n");
            }
        }
    }
    public TransferProperty(){                           //定义构造方法

    }
    public static void main(String[] args) {
        TransferProperty tr1=new TransferProperty();       //创建一个对象tr1
        TransferProperty tr2=new TransferProperty();        //创建一个对象tr2
        tr2.i=60;                                           //对类成员变量i赋值
        System.out.println("第一个对象调用变量i的结果:"+tr1.i++);
        tr1.call();                                          //使用第一个对象调用类成员变量
        //使用第二个对象调用类成员变量
        System.out.println("第二个对象调用变量i的结果:"+tr2.i);
        tr2.call();

    }

}

//打印之前对i进行赋值60,但只是对tr2的i进行赋值,所以tr1的i仍然为47,而tr2的i为60.

代码1得知,每个对象的产生是相互独立的,不会相互影响。 

public class AccessProperty {

    static int i = 47;                                    //定义静态成员变量

    public void call() {                                 //定义成员方法
        System.out.println("调用call方法");
        for (i = 0; i < 3; i++) {
            System.out.print(i + " ");
            if (i == 2) {
                System.out.println("n");
            }
        }
    }

    public AccessProperty() {                           //定义构造方法

    }

    public static void main(String[] args) {
        AccessProperty tr1 = new AccessProperty();       //创建一个对象tr1
        AccessProperty tr2 = new AccessProperty();        //创建一个对象tr2
        tr2.i = 60;                                           //对类成员变量i赋值
        System.out.println("第一个对象调用变量i的结果:" + tr1.i++);
        tr1.call();                                          //使用第一个对象调用类成员变量
        //使用第二个对象调用类成员变量
        System.out.println("第二个对象调用变量i的结果:" + tr2.i);
        tr2.call();

        
    }

}


代码2得知,多个对象对静态成员变量操作会更改静态成员变量的值。

7.6.3对象的引用

类名 对象引用名称

如一个Book类的引用:Book book;

一个引用不一定要和一个对象关联。引用与对象相关联:Book book=new book;

book是Book类的一个对象,book包含Book对象的一个引用。

7.6.4对象的比较

“==”与“equals()方法”

equals:比较两个对象引用所指的内容是否相等。

==:比较两个对象引用的地址是否相等。

public class Compare {
    public static void main(String[] args) {
        String c1=new String("abc");                //创建String型对象引用
        String c2=new  String("abc");
        String c3=c1;                                      //将c1对象引用赋予c3
        //使用“==”比较
        System.out.println("c2==c3的运算符为:"+(c2==c3));
        System.out.println("c1==c3的运算符为:"+(c1==c3));
        //用“equals”比较
        System.out.println("c2 equals c3的运算符为:"+c2.equals(c3));
        

    }
}

 

7.6.5对象的销毁

java只能自动回收由new创建的对象。

Object类的finalize()方法,被声明为protected,用户可以重新定义该方法。

java提供System.gc()方法强制启动垃圾回收器

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678366.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号