Java类和对象

一、 OOP(Object Oriented Programming):面向对象程序设计语言
OOP三大特征:继承 封装 多态
OOP的一条基本原则:计算机程序由单个能够起到子程序作用的单元或对象组合而成。
OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。
OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

面向对象和面向过程区别:
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
面向过程注重的是过程,在整个过程中所涉及的行为,就是功能。适用于处理小规模问题。
面向对象注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来。适用于处理大规模问题,将复杂的事情简单化。

二、类(模板):高配的结构体,类就是一类对象的统称
对象(实体):这一类具体化的一个实例
一个类可以产生多个对象
1.类的定义:

   // 创建类
  class 类名{  
  field;//成员属性(实例和静态)
  method;//成员方法
  }
  // 实例化对象
 类名 <对象名> = new 类名();

class为定义类的关键字,ClassName为类的名字,{}中为类的主体。
类中的元素称为:成员变量。类中的函数称为:成员方法。

注意事项
①new 关键字用于创建一个对象的实例.
②使用对象(静态变量或方法用类名.) . 来访问对象中的属性和方法.
③同一个类可以创建多个实例

2.类的成员:字段、方法、代码块、内部类和接口等。
成员变量如果没有赋值,默认值为自己所对应的零值
默认值规则
对于各种数字类型, 默认值为 0.
对于 boolean 类型, 默认值为 false.
对于引用类型(String, Array, 以及自定制类),默认值为null
对于char类型,默认值为‘/u0000’
Person person1=new Person();
person1.show();//成员变量没有赋值

三.static:
被static修饰的成员变量,成员方法,调用或访问都通过类名.属性或方法
静态成员变量,方法不依赖于对象
main函数如果不是静态的,main函数的调用需要对象,对象又需要在main函数里生成

 class Person{
        public String name;//属性 成员变量 实例成员变量
        public int age;
        public static int count=10;//静态成员变量(方法区)
        public final int SIZE=20;//实例成员变量(属于对象,在堆上)
        //行为 方法 实例成员方法
        public void eat(){
            System.out.println("吃饭");
        }
        public void sleep(){
            System.out.println("睡觉");
        }
        public void show(){
            System.out.println("Name:"+name+"  Age:"+age);
        }
        public static void func1(){
            System.out.println("func1()");
        }
    }
    public class Test {
        public static void main(String[] args) {
           //instan实例化一个对象
            Person person=new Person();
            //静态成员变量,静态成员方法访问:类名.属性,不建议通过对象的引用访问
            System.out.println(Person.count);
            Person.func1();
            //实例成员变量:通过对象的引用访问
            System.out.println(person.SIZE);
            person.name="xiaoruru";
            person.age=20;
            person.show();
        }
    }
            

在这里插入图片描述
static修饰属性,Java静态属性和类相关, 和具体的实例无关. 换句话说, 同一个类的不同实例共用同一个静态属性.

class Person {
    public  int count1;
    public static int count = 0;
}
public class Test {
    public static void main(String[] args) {
     Person person=new Person();
     person.count1++;
     Person.count++;
        System.out.println(person.count1);//输出1
        System.out.println(Person.count);//输出1
        Person person1=new Person();
        person1.count1++;
        Person.count++;
        System.out.println(person.count1);//输出1
        System.out.println(Person.count);//输出2
    }
}

static修饰方法
如果在任何方法上应用 static 关键字,此方法称为静态方法。
静态方法属于类,而不属于类的对象。
可以直接调用静态方法,而无需创建类的实例。
静态方法可以访问静态数据成员(不能访问非静态数据成员),并可以更改静态数据成员的值

四.封装:
private:私有的(只能在类里访问)
初始化方式:
1)提供一系列get()和set()方法 alt+insert(按住shift全选)
2)构造函数 没有返回值,方法名和类名相同
如果在实现类的时候没有写构造方法,编译器会自动生成一个不带有参数的构造方法,如果自己写了一个不带有参数的构造方法,编译器将不会生成。
作用:初始化对象

一个对象的产生分为两步:
①为对象分配内存
②调用合适的构造方法(构造方法不止一个且构造方法也能发生重载)

Person person=new Person();
System.out.println(person);//调用Object的toString方法,打印哈希地址

alt+insert+toString,重写toString,可以使用 toString 这样的方法来将对象自动转成字符串。
(Object是所有类的父类)@Override重写Object的toString方法,调用自己的toString方法

五.this关键字:代表当前对象的引用,可以借助 this 来访问对象的字段和方法
静态方法内不能使用this
this.实例成员方法
this.实例成员变量
this();调用构造方法,必须放到第一行,只能调用一次

六.代码块:
使用 {} 定义的一段代码.
根据代码块定义的位置以及关键字,又可分为以下四种:
普通代码块:定义在方法中的代码块
构造块(实例代码块):定义在类中的代码块(不加修饰符)。构造代码块一般用于初始化实例成员变量(静态也可以)。
实例代码块优先于构造方法执行
静态块 :初始化静态数据成员(不能初始化实例)
静态代码块优先于实例代码块
同级的和顺序有关,静态的只初始化一次
同步代码块
七.匿名对象:new Person()只能使用一次
匿名只是表示没有名字的对象.
没有引用的对象称为匿名对象.
匿名对象只能在创建对象时使用.
如果一个对象只是用一次, 后面不需要用了, 可以考虑使用匿名对象

class Person {
private String name;
private int age;
public Person(String name,int age) {
this.age = age;
this.name = name;
}
public void show() {
System.out.println("name:"+name+" " + "age:"+age);
}
}
public class Main {
public static void main(String[] args) {
new Person("ruru",21).show();//通过匿名对象调用方法
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿哈哈~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值