类和对象(java)

类和对象

1.面向对象

java是一门面向对象语言(oop),面向对象是解决问题的一种思想,主要是靠对象之间的交互完成一件事情;

2.类

(1) 类是用来对一个实体(对象)进行描述的;
(2) 类是由字段(属性)和方法(行为)组成;

class ClassMate(){
    public String name;//成员变量
    public int age;
    public String sex;
    public void Study(){
         System.out.println("学习");//成员方法
    }
}

注意:
1.类名注意要采用大驼峰的命名方式;
2.成员前写法统一为public;
3.此处写的方法不带static关键字;
(3) 类的实例化:
1.new关键字用于创建一个对象的实例

ClassMate classmate = new ClassMate();

2.使用" . "来访问对象中的实例和方法

classmate.name = "李明";
classmate.age = "18";
classmate.study();

3.同一个类可以创建多个实例

3.成员变量

(1) 成员变量在方法外面,类里面;
(2) 有static修饰的成员变量称为静态成员变量(静态成员变量不属于对象,它在方法区属于类)
(3) 实例化成员变量没有初始化默认为对应0值(引用变量默认为null; 简单类型默认为0;char默认为\u0000; boolean默认为flase)

4.this引用

(1) 什么是this引用
java编译器给每个“成员方法“增加了一个隐藏的引用类型参数,该引用参数指向当前对象(成员方法运行时调用该
成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。
注意: this引用的是调用成员方法的对象
例:

public class Date{
    public int year;
    public int month;
    public int day;

    public void setDay(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day; 
    }
    public void printDate(){
        System.out.println(this.year + "/" + this.month + "/" + this.day);
    }
}

(2)this引用的特性
1.this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2.this只能在成员方法中使用
3.在成员方法中,this只能引用当前对象,不能在引用其他对象,具有final属性
4.this是成员方法第一个隐藏参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责接收;

5.构造方法

(1) 概念: 构造方法是一个特殊的成员方法,名字和类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次;
注意: 没有提供构造方法时,编译器会默认给一个不带任何参数的构造方法,当你提供了构造方法时编译器不会再提供构造方法了

public class Date{
    public int year;
    public int month;
    public int day;
    //无参的构造方法
    public Dtae(){
    	this.year = 2001;
    	this.month = 1;
    	this.day = 4;
    }
	//带有三个参数的构造方法
    public Date(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day; 
    }
    public void printDate(){
        System.out.peintln(this.year + "/" + this.month + "/" + this.day);
    }
    public static void main(String[] args){
    //此处创建一个Dtae类型的对象,并没有显示调用构造方法
    	Date d = new Date(2001,1,2);//输出Dtae(int,int,int)方法被调用了
    	d.printDate();//2001-1-2
    }
}

注: 上面的两个构造方法,名字相同,参数列表不同,因此构成了方法重载.
(2) 特性
1.名字必须与类名相同
2.没有返回值类型,设置为void也不行
3.创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
4.构造方法可以重载
5.如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认的构造方法一定是无参的.
6.经过javac编译之后,构造函数的名字会被修改成
7.构造方法中,可以通过this调用其他构造方法来简化代码(this必须是构造方法中第一条语句)
8.绝大多数情况下使用public来修饰,特殊场景下会被private修饰

6.对象的产生

(1) 一个对象的产生分两步 :
1.为对象分配内存
2.调用合适的构造方法
(2) 为什么说this关键字代表对象不对?
因为this代表当前对象的引用,对象产生要分为两步,而this只需第一步即可,不需要第二步,所以它不是代表对象.

7.封装

(1) 用private来修饰属性和方法,private限定的成员变量只能在类中使用,要在其他地方使用需要提供接口;
(2) 访问限定符 :
在这里插入图片描述

注意 :

  1. protected主要用于继承中
  2. default的权限是: 什么都不写
  3. 访问权限除了可以限定类中成员的可见性,也可以控制类的可见性
  4. 一般情况下成员变量设置为private,成员方法设置为public
8.常见的包
  1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
  2. java.lang.reflect:java 反射编程包;
  3. java.net:进行网络编程开发包。
  4. java.sql:进行数据库开发的支持包。
  5. java.util:是java提供的工具程序包。(集合类等)
  6. java.io:I/O编程开发包。
9.static成员

(1) 被static修饰的成员变量,称之为静态成员变量
(2) 静态成员变量的特性 :

  1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
  2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
  3. JDK7及以前,HotSpot(Java虚拟机)中存储在方法区,JDK8及之后,类变量存储在Java堆中
  4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)
    (3) static修饰成员方法 :
    被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过
    静态方法来访问的.
    (4) 静态成员方法的特性 :
  5. 不属于某个具体的对象,是类方法
  6. 可以通过对象调用,也可以通过类名.静态方法名(…)方式调用,更推荐使用后者
  7. 静态方法没有隐藏的this引用参数,因此不能在静态方法中访问任何非静态成员变量
  8. 静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用
    (5) static成员变量初始化 :
    就地初始化和静态代码块初始化
    就地初始化 : 在定义时直接给出初始值
public class Student{
private String name;
private String gender;
private int age;
private double score;
private static String classRoom = "502";
10.代码块

(1) 概念 : 使用{ }定义的一段代码称为代码块
(2) 分类 : 普通代码块,构造块,静态块,同步代码块;
(3) 普通代码块:定义在方法中的代码块.(这种用法较少见)
(4) 构造代码块:定义在类中的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。
注意 : 实例代码块优先于构造方法执行,因为编译完成后,编译器会将实例代码块中的代码拷贝到每个构造方法第一条语
句前
(5) 静态代码快: 使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量
注意 : 1.静态代码块不管生成多少个对象,其只会执行一次
2.静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
3.如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次合并,最终放在生成
的<>方法中,该方法在类加载时调用,并且只调用一次
4.实例代码块只有在创建对象时才会执行。

`

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值