当前位置:主页 > 软件编程 > JAVA代码 >

手把手带你粗略了解Java--类和对象

时间:2022-10-27 10:45:35 | 栏目:JAVA代码 | 点击:

认识类和对象

1.类、对象是什么?

类在Java中,也叫做自定义类型。

类就是一类对象的统称,对象就是这一类具体化的一个个例

可以把类想象成一个模板,把对象想象成实体,比如:建房子,会有图纸,然后根据图纸去建房子,一张图纸可建很多同样的房子。而图纸就是"类",建的房子就是"实体",通过一个类可以产生多个对象

2.什么是面向对象?

之前在初始Java篇简单讲述了Java的面向对象性,对比了面向对象和面向过程的不同

这里就不多说了 :https://blog.csdn.net/m0_47988201/article/details/118996045?spm=1001.2014.3001.5501.

面向对象是思考问题的一种方式,是一种思想

总的来说,面向对象就是用代码(类),来描述客观世界事物的一种方式,一个类主要包含一个事物的属性和行为

面向对象的好处是:将复杂的事情简单化,只要面对一个对象就行

之后,会从这三点进行深入学习:找对象―创对象―使用对象

3.一个对象的产生过程是?

①给对象分配内存;

②调用合适的构造方法

🔺OOP语言的三大特征?

OOP:面向对象编程

三大特性:继承、封装、多态

类和对象的实例化

类的定义:

在Java中定义类,需要 class 关键字

类中包含的内容称为类的成员;属性主要是用来描述类的,称之为类的成员属性或者类成员变量;方法主要说明类具有哪些功能,称为类的成员方法

类的成员包括:字段、方法、代码块、内部类和接口等,此处只介绍前三个

语法格式:

class ClassName {
field ; …// 字段(成员属性) / 成员变量
method;// 行为 / 成员方法
}

举例:

class Person{
    //字段
	String name;
	int age;
    //行为
    public void eat(){
        System.out.println("eat()!");
    }
    public void sleep(){
        System.out.println("sleep()!");
    }
}

注意:

实例化对象:

在Java中,通过关键字new,配合类名可以实例化一个对象

用类类型创建对象的过程,称为类的实例化

//实例化对象
Person person1 = new Person();
Person person2 = new Person();
Person person3 = new Person();
Person person4 = new Person();

在这里插入图片描述

①如何访问对象中的实例成员变量?

通过对象的引用即可访问对象的引用 . 成员变量

public static void main(String[] args) {
	//实例化一个对象
	Person person = new Person();
	//访问对象中的实例成员变量
	//通过对象的引用
	System.out.println(person.age);
	System.out.println(person.name);
}

在这里插入图片描述

②如何访问静态的数据成员?

类名 . 静态成员变量

public static void main(String[] args) {
	Person per = new Person();
	System.out.println(Person.size);
}

注意:

方法:

实例成员方法:

public void eat(){
    System.out.println("eat()!");
}
public void sleep(){
    System.out.println("sleep()!");
}

静态成员方法

静态成员方法
public static func(){
	System.out.println("static::func()!");
}

🔺构造方法

构造方法的方法名和类名相同,且没有返回值

构造方法作用: 实例化一个对象

class Person{
    private String name;
    private int age;
    public  Person(){
        System.out.println("Person!");
    }
	public Person(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("Person<String,int>");
    }
public class Test {
    public static void main(String[] args) {
        //写这行代码的时候,就会调用构造方法
        Person person1 = new Person();
        Person person2 = new Person("Huahua",18);
	 }
}

注意:

①访问实例成员方法

通过对象的引用进行访问:对象的引用 . 实例成员方法

public static void main(String[] args) {
	Person per = new Person();
	per.eat();
	per.sleep();
}

②访问静态成员方法

类名 . 静态成员方法

public static void main(String[] args) {
	Person.func();
}

static 关键字

1.修饰属性:

Java静态属性和类相似,和具体的实例无关

即:同一个类的不同实例共用同一个静态属性

class Test{
    public int a = 0;
    public static int count;
}

静态成员变量只有一份:

public static void main(String[] args) {
    Test T = new Test();
    T.a++;
    Test.count++;
    System.out.println(T.a+" "+Test.count);
}

输出结果:

在这里插入图片描述

分析原因:

在这里插入图片描述

2.修饰方法:

在方法前应用 ststic 关键字,就把该方法称为静态方法

静态成员方法
public static func(){
	System.out.println("static::func()!");
}

注意:

this 关键字

this 表示当前对象的引用

this 使用方法:

1、this . 属性名称 访问属性,指的是访问类中的成员变量,用来区分成员变量和局部变量

2、this . 方法名称 用来访问本类的成员方法

3、this();访问本类的构造方法,()中可以有参数的 如果有参数 就是调用指定的有参构造

举例1

访问属性 和 访问方法

class  Person{
    private String name;
    private int age;
    //调用属性
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //调用方法
    public void eat{
    	System.out.println(this.getName());
    }
    public String getName{
    	return name;
    }
}

举例2

访问构造方法

class Person{
    private String name;
    private int age;
    public  Person(){
    	// 访问构造方法
        this("Huahua",3);
        System.out.println("Person!");
    }
    public Person(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("Person<String,int>");
    }
}

注意事项:

getter 和 setter方法

当我们使用 private 来修饰字段的时候,就无法直接使用这个字段了,这就需要使用 getter 和 setter 方法

class Person{
    private String name;
    //setter方法给设施变量的值
    public String getName{
       	return name;
    }
    public void setName(String name){
        this.name = name;
    }
}

注意事项:

封装

封装:用 private 来修饰属性 / 方法

类和对象阶段,主要研究的就是封装特性

class Student{
    private String name;
    public int age;
    public void func1(){
        System.out.println("func1()");
    }
}

如果一个属性 / 方法被 private 修饰之后,限定只能在类当中来使用

封装的实现步骤:

1、修改属性的可见性――设为private

2、创建getter / setter方法――用于属性的读写

3、在getter / setter方法中加入属性控制语句――对属性值的合法性进行判断

举例:

class Student{
    //成员变量私有化
    private int age;
    //setter方法给设施变量的值
    public void setAge(int age){
        if(age < 0){
            System.out.println("年龄无效!");
        }
        else{
            this.age = age;
        }
    }
    //提供一个公开的接口
    //使用getter方法获取赋值
    public int getAge(){
        return age;
    }
}
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        //检验
        student.setAge(-10);
        System.out.println(student.getAge());
    }
}

输出结果:

在这里插入图片描述

Java中的访问修饰符:

访问修饰符 本类 同包 子类 其他
private
public
protected
默认

封装的作用:

建议:以后在设计类的时候,无特殊要求,所有的属性虽好都设置为私有的private ,一定要体现封装

代码块

使用 { } 定义的一段代码称为代码块

重点掌握代码块执行的先后顺序

分为四种:

普通代码块:在方法或语句中出现的{ }就称为普通代码块
实例代码块 (构造代码块)
静态代码块
同步代码块

实例代码块:

定义在类中且没有加static关键字的代码块

如果存在多个构造代码块,执行顺序由他们在代码中出现的次序决定,先出现先执行

特性:

{
 System.out.println("实例代码块......");
}

注意事项:

静态代码块:

static {
 System.out.println("静态代码块......");
}

注意事项:

静态 / 实例代码块异同点

相同点: 都是JVM加载类后且在构造函数执行之前执行,在类中可定义多个,一般在代码块中对一些static变量进行赋值

不同点静态代码块在非静态代码块之前执行,静态代码块只在第一次 new 时执行一次,之后不在执行。而非静态代码块每new一次就执行一次

总结

您可能感兴趣的文章:

相关文章