类和对象.

类和对象.,第1张

类和对象.

类和对象
  • 前言
  • 一、类和对象
    • 1.类
    • 2.对象
  • 二、static
    • 1.static属性:静态属性
    • 2.static方法:类方法/静态方法(工具方法)
    • 3.static代码块:静态代码块
    • 4.static类:静态内部类
  • 三、面向对象三大特征:封装、继承、多态
  • 四、构造方法
  • 五、this关键字
    • 1.this修饰属性,表示 直接从本类中寻找属性
    • 2.this修饰方法,表示调用本类方法
    • 3.this表示当前对象引用
  • 六、代码块
    • 普通代码块:定义在方法中,使用{}括起来的代码块
    • 构造代码块:定义在类中,不加任何修饰符,直接使用{}定义的代码块
    • 静态代码块:定义在类中,使用static修饰的代码块
    • 同步代码块:多线程部分详解
  • 补充
    • 1.toString()
    • 2.匿名对象:一个对象没有任何引用指向


前言

类和对象:存在即合理
编程思想:如何把现实生活问题抽象成代码实现
面向对象编程(更符合人类思考问题的方式):Java语言一切皆对象,所有的 *** 作行为被封装在一个个的对象中。
面向过程编程:C语言全是函数调用,一个函数就代表一个过程。


一、类和对象

类:模板,规定了该类所具备的属性和行为
对象:类的一个实例

比如:
人类:类
普京:对象

类描述了所有对象都具备的一些属性和行为
具体的属性值和能表现出来的行为是由具体的对象来表现
不同对象之间千差万别,主要是属性值不同

1.类
//类的定义
class 类名称{
  属性
  行为/方法
  其他类/接口
}

1.类名称使用大驼峰命名法
从第一个单词开始首字母大写,多个单词都是首字母大写
2.一个源文件*.java必须与该文件中的主类同名(public class),源文件中主类有且只有一个(一般:主方法main存在于主类中,可以没有)
3.一个源文件可以存在N个普通类(直接使用class声明的类,不加public)

2.对象

根据Person类产生他的对象
一个类可以产生N个对象

Person per = new Person();

如何根据对象来调用属性和方法?
**.**访问修饰符:所有引用数据类型访问堆上空间,使用“.” *** 作符

per.name="zhang";
per.show();

二、static 1.static属性:静态属性

表示类属性,该类的所有对象共享该属性,直接通过类名称访问
static修饰的属性保存在JVM方法区,有且只有一个,只和类相关(可以直接China.country,不产生对象就访问,China引用为NULL时,仍然可以访问类的静态变量-类属性)


类中常量:static final 此时常量全局唯一且不能修改,所有对象共享此常量

2.static方法:类方法/静态方法(工具方法)

直接通过类名称调用

Arrays.sort();
Arrays.copyOf();

若main中调用静态方法(static修饰的方法),直接使用方法名

思考:
静态方法能否访问类中成员变量?
答:不能,因为成员变量必须有对象,静态方法不需要对象就可以调用
静态方法能否访问类中静态变量?
答:能。(static家族之间可以相互调用-都不要对象)
成员方法能否访问静态变量?
答:能。
成员方法能否访问成员变量?
答:能。一个家族的。

3.static代码块:静态代码块

静态代码块:定义在类中,使用static修饰的代码块
当类加载时执行一次,与对象产生无关。
类加载:就是把需要使用的类加载到JVM中

4.static类:静态内部类

static class-没对象也能用

三、面向对象三大特征:封装、继承、多态

面向对象三大特征:封装、继承、多态

访问权限分为两种:
private:实现属性封装。
1.当一个属性被private修饰,该属性只能在类的内部可见,出了该类无法使用(即使是继承类也不行),此时调用者无法直接使用。
2.类外部 *** 作(取得/修改)private属性,需要使用类提供getter/setter,根据情况决定。
3.private可以修饰内部类不能修饰外部类(因为类就是为了产生对象,若在外部修饰无法使用)

public:公共的,无论如何都能用

四、构造方法

构造方法:是类的特殊方法,构造方法是执行对象的初始化 *** 作

语法:构造方法没有返回值声明,方法名称与类名称相同
访问修饰符(public private)类名称(){}

class Person{
  private String name;
  private int age;
  public Person(){
     System.out.println("hello");
  }
}

a.当类中没有显示声明构造方法时,JVM会生成一个默认的无参构造。当在类中显示提供了构造方法(编写构造方法),JVM将不再生成默认的无参构造

class Person{
  private String name;
  private int age;
  public Person(String n){
     name=n;
  }
}

b.什么是初始化?作用:给类中成员变量赋初值

c.构造方法的重载:这些重载的构造方法,只是参数的个数不同(因为构造方法就是给类中属性赋值,类中属性的类型再定义时就规定好了)
一般按照构造方法参数个数升序排列

d.构造方法之间相互调用:使用this(相应参数);(必须放在该方法的第一行,并且调用不能成环)

五、this关键字 1.this修饰属性,表示 直接从本类中寻找属性

2.this修饰方法,表示调用本类方法

a.调用本类的构造方法:this(参数)
b.调用本类中普通方法:this.方法名称()

3.this表示当前对象引用

当前调用的成员方法或变量是通过对象A调用的,则此时this就是代表A

六、代码块

根据代码块定义的位置及关键字分为:

普通代码块:定义在方法中,使用{}括起来的代码块 构造代码块:定义在类中,不加任何修饰符,直接使用{}定义的代码块

当产生对象时执行构造代码块,优先于构造方法执行。并且有几个对象产生就执行几次构造代码块

静态代码块:定义在类中,使用static修饰的代码块

当类加载时执行一次,与对象产生无关。
类加载:就是把需要使用的类加载到JVM中

同步代码块:多线程部分详解 补充 1.toString()

当调用println方法进行对象输出时,默认输出的时该对象地址hash()->
若想输出对象的内容时,再类中提供toString()方法即可

public String toString(){
  String str = "name" + name + ",age = " + age;
  return str;
}
2.匿名对象:一个对象没有任何引用指向

new Person( );
只能使用一次,没有任何应用指向

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5693508.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存