类和对象

类和对象

1.类和对象初步认识

【面向对象概念】

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

2.类就是一类对象的统称。对象就是这一类具体化的一个实例。

3.面向对象的好处:将复杂的事情变简单了,只要面对一个对象就行。

【面向对象设计】

面向对象设计把握一个重要的经验:谁拥有数据,谁对外提供操作这些数据(私有)的方法。(被动的一方是数据的拥有者,主动的一方是执行者)

开发时:找对象,建对象,用对象,并维护对象之间的关系。

简而言之

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

2.类和类的实例化

1.类就是一类对象的统称。对象就是这一类具体化的一个实例。

2.一个模板可以实例化无数个对象。

3.一个类,可以创建无数个对象。

4.类在Java中属于引用类型。

基本语法
//创建类
class 类名{
	field;//成员属性
	method;//成员方法
}

//实例化对象
类名 对象名 = new 类名();

class为定义类的关键字,类中的元素称为:成员属性。类中的函数称为:成员方法。

代码示例:

class Person {
     public String name;//成员属性(实例变量)
     public String sex;
     public int age;
     
     public void eat() {//成员方法
         System.out.println("吃饭");
     }
    
    public void sleep() {
         System.out.println("睡觉");
     }
}

public static void main(String[] args) {
        Person person = new Person();//通过new来实例化对象
        person.eat();
        person.sleep();//通过对象来调用方法
        //可以实例化很多类
        Person person1 = new Person();
        Person person2 = new Person();
    }

//打印结果
吃饭
睡觉

3.类的成员

3.1字段/属性/成员变量

默认值规则:

​ 1.对于各种数字类型,默认值为0。

​ 2.对于布尔类型,默认值为false。

​ 3.对于引用类型,默认值为null。

代码示例:
 class Person {
    public String name;
    public int age;

}

public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.age);
        System.out.println(person.name);
    }
    
//打印结果
0
null
字段就地初始化

直接给定初始值

public class Person {
    public String name = "java";
    public int age = 10;

}

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

//打印结果
10
java

3.2方法(method)

用来描述一个对象的行为

代码示例:
public class Person {
    public String name = "java";
    public int age = 10;

    public void show() {
        System.out.println("我叫"+name+",今年"+age+"岁");
    }
}

public static void main(String[] args) {
        Person person = new Person();
        person.show();
    }

//打印结果
我叫java,今年10岁

3.3static修饰

(1)修饰属性同一个类的不同实例共用一个静态属性。被static修饰,属于类,不属于对象。

代码示例:
public class Person{
    public int age;
    public static int count;
}

public static void main(String[] args) {
        Person person = new Person();
        person.age++;
        Person.count++;
        System.out.println(person.age);
        System.out.println(Person.count);
        System.out.println("=============");
        Person person1 = new Person();
        person1.age++;
        Person.count++;
        System.out.println(person1.age);
        System.out.println(Person.count);
    }

//打印结果
1
1
=============
1
2

**(2)**修饰方法

被static修饰的方法叫做静态方法

​ 静态方法属于类,而不属于类的对象。

​ 可以直接调用静态方法,而无需创建对象。

​ 静态方法可以访问静态数据成员,并不可以更改静态数据成员的值。

public class Person{
    public int age;
    public static int count;
    
    public static void show() {
        count = 10;
        //age = 0;不可访问非静态成员变量
    }
}

public static void main(String[] args){
   		Person.show();//无需创建,直接调用
        System.out.println(Person.count);
}

//打印结果
10

3.4小结

代码示例:
public class Person {
    public String name;//实例变量
    public int age;//实例变量   存放在对象中
    public static int count;//静态变量,编译时已经产生,属于类本身,且只有一份,存放在方法区
    public final int SIZE = 10;//常量,属于对象,被final修饰,后续不可修改
    public static final int COUNT = 100;//静态常量,属于类本身,被final修饰,后续不可修改

    //实例成员方法
    public void eat() {
        int a = 1;//局部变量
        System.out.println("吃饭");
    }

    //实例成员方法
    public void sleep() {
        System.out.println("睡觉");
    }

    //静态方法
    public static void func() {
        System.out.println("静态方法");
    }
}

public static void main(String[] args) {
        //创建对象
        Person person = new Person();
        System.out.println(person.age);
        System.out.println(person.name);
        System.out.println("===========");
        System.out.println(Person.count);
        System.out.println(Person.COUNT);
        System.out.println("===========");
        Person.func();
        person.eat();
        person.sleep();
    }

//打印结果
0
null
===========
0
100
===========
静态方法
吃饭
睡觉

4.封装

4.1private实现封装

被public修饰的成员变量或者成员方法,可以直接被类的调用者调用;

被private修饰的成员变量或者成员方法,不能被类的调用者调用。

代码示例:使用private封装属性,提供public方法供类的调用者使用
public class Person {
    private String name = "李四";
    private int age = 10;

    public void show() {
        System.out.println(name+"今年"+age+"岁");
    }
}

public static void main(String[] args) {
        Person person = new Person();
        person.show();
    }

//打印结果
李四今年10岁

4.2get和set方法

set方法表示设置这个变量的值;

get方法表示得到这个变量的值。

代码示例:
public class Person {
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public static void main(String[] args) {
        Person person = new Person();
        person.setAge(10);
        person.setName("曹操");
        System.out.println(person.getAge()+","+person.getName());
    }

//打印结果
10,曹操    

5.构造方法

5.1基本语法

构造方法是一种特殊方法, 使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作.

new执行过程

为对象分配内存空间

调用对象的构造方法

语法规则

1.方法名称必须与类名称相同

2.构造方法没有返回值类型声明

3.每个类中一定至少存在一个构造方法,如果没有明确定义,系统会自动生成一个无惨构造

代码示例:
public class Person {
    private String name;
    private int age;

    //默认构造方法
    public Person() {
        this.name = "貂蝉";
        this.age = 24;
    }
    //带有参数的构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void show() {
        System.out.println(name+","+age);
    }
}

public static void main(String[] args) {
        Person person = new Person();//调用不带参数的构造方法
        person.show();
        Person person1 = new Person("曹操",25);//调用带参数的构造方法
        person1.show();
    }

//打印结果
貂蝉,24
曹操,25

5.2this关键字

this表示当前对象引用(注意不是当前对象). 可以借助 this 来访问对象的字段和方法。

5.3toString方法

代码示例:
public class Person {
    private String name;
    private int age;

    //默认构造方法
    public Person() {
        this.name = "貂蝉";
        this.age = 24;
    }
    //带有参数的构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void show() {
        System.out.println("name="+name+",age="+age);
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public static void main(String[] args) {
        Person person1 = new Person("曹操",25);
        person1.show();
        System.out.println(person1.toString());
    }

//打印结果
name=曹操,age=25
Person{name='曹操', age=25}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值