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

java 对象与类

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

java 对象与类

初识面向对象 面向过程&&面向对象 面向过程
  • 步骤清晰简单,第一步做什么,第二步做什么
  • 适合处理简单问题
面向对象
  • 分类。对这些类别分别思考
  • 适合处理复杂的问题
  1. 本质:以类的方式组织代码,以对象的组织(封装)数据
  2. 抽象
  3. 三大特性
    (1)封装
    (2)继承
    (3)多态
  4. 从认识论的角度,先有对象后又类
  5. 从代码运行角度考虑是先有类有对象
方法的回顾 方法的调用
  1. 静态方法
  2. 非静态方法

假如我有两个类,一个是Student 类,另一个是Teacher 类,我在Student类中写了一个方法 public static void say() ,如果我想在Teacher 类中调用,直接Student.say(),即可,反之如果没有static,则需实例化这个类 对象类型 对象名 = 对象值(new Student().say())
Student student = new Student();
student.say();

//和类一起加载
public static void a(){
	b();                 //不可调用b(),会报错,如果两个都有static或者都没static,这样是不会报错的
}
//类实例化后才存在
public void b(){
}
类和对象的关系

一个类中有属性,有方法,抽象的模板

创建和初始化对象
  1. 使用new关键字创建对象
Hy baiYueChu ;        //变量baiYueChu    是引用Hy该类的一个实例
baiYueChu = new Hy(); //创建一个对象,并且将它的引用赋给变量baiYueChu

Hy baiYueChu = new Hy(); //此一条语句结合上述功能

使用new关键字创建的时候,除了分配内存空间,还会给创建好的对象进行默认初始化

如上图,我们创建两个类,一个Hy(狐妖小红娘),另一个类是Character(人物),在Hy类中,我们在这个类中给所有的人物定义两个属性,name lover,我们开始不能设置name 是什么 lover是什么,毕竟狐妖里面有许多人,然后我们在Character 类中实例化,我们实例化了 baiYueChu wangQuanFuGui,这两个人物拥有两个属性 name lover ,我们可以设置他们这两个属性。(表述可能不太清楚)。所以 以类的方式组织代码,以对象的组织(封装)数据 ,有没有那么一点点理解了!!!

  1. 构造方法(特殊类型的方法) <-------调用它可以创建一个新对象
  • 分类
    (1) 无参构造方法
    (2) 有参构造方法

类中的构造器也称构造方法,是在进行创建对象的时候必须要调用的,构造器特点

  1. 必须与类的名字相同
  2. 必须没有返回类型,也不能写void

一个类即使什么都不写也会存在一个构造方法(默认存在)
显示定义构造器

构造器核心作用

  1. 使用new关键字,本质是调用构造器
  2. 用来初始化值
//与类名相同,无参数
//实例化初始值
public Hy(){
}


//有参构造器    :一旦定义了有参构造器,无参必须显式定义
public Hy(String name,String lover){

}
创建对象内存分析

看这

Hy baiYueChu = new Hy();
Hy wangQuanFuGui = new Hy();

只是存放了该对象的引用,相当于指针一样,指向堆中对象的存储空间

访问对象的数据和方法

用点操作符(.)
baiYueChu.name引用数据域
baiYueChu.print(); //调用print方法

Math.power(2,3) 可以这样调用power因为Math类中的方法都是用关键字static 定义的静态方法,而print是非静态的

引用数据域和null值

如果一个引用类型的数据域,没用引用任何对象,如上程序中,我们在Hy中并没有引用任何对象,没有赋值,所以它有初始值那就是null(因为那是String类)反之,如果只是局部变量没有赋初值,其实系统不会给局部变量一个默认初始值

静态变量,常量,方法

静态变量被类中的所有对象所共享,静态变量不能访问类中的实例成员(实例数据域和方法)

实例方法可以调用实例方法和静态方法,以及访问实例数据域或者静态数据域。静态方法可以调用静态方法以及访问静态数据域,然而静态方法不能调用实例方法或者访问实例数据域,因为静态方法和静态数据域不属于某个特定的对象

可见修饰符
  1. 可以在类、方法和数据域前使用public (公共类) ,表明可以被任何其他的类访问(无限制)
  2. 如果一个类没有被定义为public ,那么它只能在同一个包中被访问
  3. private 修饰,表明只可以在它自己的类中被访问

修饰符private只能应用于类的成员上

大多数情况下,构造方法都应该是公共的,但是如果想防止用户创建类的实例,可以使用私有的构造方法.例如Math中的所有数据域和方法都是静态的,所以没必要创建Math的实例,为了防止用户创建`Math类的对象,构造方法定义如下

private Math(){
}
数据域封装

将数据域设为私有有利于保护数据,并且使得类易于维护

  • 通过设置方法赋初值
  • 通过获取方法返回数据域中的值(alt+insert)


注意:从现在开始,除了特别的原因,所有数据域都应该声明为私有,并且所有的构造方法和方法应该被声明为公共

向方法传递对象参数(鄙人不是很清楚)

要注意方法中的形参是怎么定义的

public class Test {
    public static void main(String[] args){
        Hy baiYueChu = new Hy();
        baiYueChu.setName("白月初");
        printCharacter(baiYueChu);

    }
    public static void printCharacter(Hy renWu){      //传递过去的相当于指向baiYueChu对象的指针
        System.out.println(renWu.getName()+"说  万物有界,爱恨无由");
    }
}
对象数组
  1. 声明创建
Hy[] renWu = new Hy[10]   //声明创建了包含10个Hy对象的数组
  1. 初始化
public class Test {
   public static void main(String[] args) {
       Hy[] renWu = new Hy[10];
       for(int i =0 ;i< renWu.length;i++){
           renWu[i] = new Hy();   //Hy()  构造器,可以初始化
       }

       renWu[0].setName("涂山红红");
       renWu[1].setName("涂山雅雅");
       renWu[2].setName("涂山容容");
       renWu[3].setName("涂山苏苏");
       renWu[4].setName("王权霸业");
       renWu[5].setName("东方淮竹");

       for(int i =0;i < 5;i++){
           System.out.println(renWu[i].getName());
       }
   }
}

变量的作用域

实例变量和静态变量的作用域是整个类,无论变量在哪里声明

如果一个局部变量和一个类变量具有相同的名字,那么局部变量优先,同名的类变量被隐藏

this 引用
  1. 引用数据域
  2. 使用this调用构造方法

使用this可以调用同一个类的另一个构造方法

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

版权所有 (c)2021-2022 wk8.com.cn

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