类与对象基础
框架
类与对象
- 类是一种抽象的数据类型,它是对某一类事物整体的描述/定义,但他不能代表具体的事物
- 动物,植物,手机,电脑 动物类里就有猫狗等等
- Person类、Pet类、Car类,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为的。
- 对象是抽象概念的的具体实例
- 张三就是Person类的一个具体实例,张三家的旺财就是Pet类里的一个具体实例
- 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念。
创建与初始化对象
- 使用new关键字创建对象
- 使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象 进行默认的初始化 以及对类中构造器进行调用。
- 构造器必须要掌握!!
构造器
- 类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的,(一个类即使什么都不写,也会存在一个方法)并且构造器有以下两个特点:
- 必须和类的名字相同
- 必须没有返回值类型,也不能写void
- 写一个Person类
package com.oop.demo02;
//java ----->class
public class Person { //Person类
//隐示 :不写 public Person{}也能被直接调用
//显示的定义构造器
String name;
int age;
/*需要使用快捷键生成一次,所以之前写的放在备注里
//实例化初始值
//构造器作用
//1.使用new关键字,本质是在调用构造器
//2.构造器一般用来初始化值
public Person(){ //无参构造器
this.name = "sheng";
}
public Person(String name){ //有参构造:一旦定义了有参构造,无参构造就必须显示定义
this.name=name;
//第一个name是当前类的 第二个name是参数传递下来的name
}
*/
//快捷键alt+insert>constructor,具体方法见下
//有参1
public Person(String name) {
this.name = name;
}
//无参
public Person() {
}
//有参2
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
/*
**测试部分**
public class Application {
public static void main(String[] args) {
//使用new关键词实例化一个对象
// Person person1 = new Person();//如果存在有参构造器,那么要使用的无参构造必须写出来哦
Person person2 = new Person("sheng");//这时就走有参构造器,这里方法是可以重载的,方法名相同时调用方法是根据参数类型
System.out.println(person2.name);//未赋值时是null,赋值后是sheng ,快捷操作person.name.sout回车
Person person3 = new Person("zhongml", 23);//重载,多传一个参数就能锁定方法
//这种感觉就像,我要通过Person(类)模板创造一个叫zhongml,年龄23的人,保存在person3里
System.out.println(person3.age);//23
}
}
}
*/
/*
**构造器回顾**
1.和类名相同
2.没有返回值
作用
1.new本质在调用构造方法 Person person3 = new Person("zhongml", 23);
2.初始化对象的值
注意点
1.定义了有参构造之后,如果想使用无参构造,必须显示的定义一个无参的构造
快捷键
alt+insert
注意点
this.当前类的=参数传下来的
*/
须知点
一个项目只存在一个mian方法作为入口
什么叫面向对象的本质:
- 以类的方式组织代码,以对象的形式组织(封装)数据。图片左侧对照类,右侧对照对象。
- 一个类作为抽象模板存在,通过new这个类,我们创建出具体的不一样的实例,对上面那就话理解就是:类里是框架的代码,对象是给的具体数据。
如何在out输出目录找到当前原文件的class文件
- 左上角file>project structure>++add content root>选择out文件>apply
-
构造器
- 默认构造器(无参构造)
- 无参构造:一个类即使什么都不写,也会默认存在一个方法,也能被直接调用。其特点是:
- 没有返回值,也没有void
- 方法名与类名相同
- 无参构造:一个类即使什么都不写,也会默认存在一个方法,也能被直接调用。其特点是:
-
有参构造
- 可以通过重载调用构造器
- 存在有参构造器的时候,再想使用无参构造就要显示的定义构造器,就是写出来无参构造器。
this.name = name;分别是哪一个name ,this.当前类的 =参数传递下来的
构造器的作用
-
使用new关键字,必须要有构造器,因为其本质是在调用构造器
Person person3 = new Person("zhongml", 23);后面的字符串,整数类型都是直接调用的有参构造器(方法)的。public class Person { String name; int age; public Person(String name, int age) { //有参构造器 this.name = name; this.age = age; } } -
用来初始化值
快捷键alt+insert生成有参构造器
-
alt+insert---->constructor -->ok生成有参构造器
-
alt+insert---->constructor ---->多选----->ok后生成有参构造器 也可多选,重载很多个
快捷键alt+insert生成无参构造器
- 快捷键 alt+insert---->constructor ---->select none 生成无参构造器
-
如何理解student对象就是student类的一个具体实例
Student student = new Student();-
其实把student对象这个名字变成 xiaoming对象就好理解
Student xiaoming =new Student();这样就是通过new 一个类创建一个具体实例叫xiaoming的对象 ,Student类是该对象的模板。
-
对象new出来之后就可以调用对象的属性和方法
- 调用对象的属性
xiaoli.name ="小红";或者student.name = “小之”; - 调用对象的方法
xiaoli.study();
- 调用对象的属性
-
-
两种构造器怎么赋值 ???不确定这样表达对不对
public static void main(String[] args) { //new出第一个宠物dog //1.对比处A Pet dog = new Pet();//通过new一个Pet调用无参构造,生成一个对象dog dog.name="旺财"; dog.age=3; dog.shout(); System.out.println(dog.age); System.out.println(dog.name); //new出第二个宠物cat Pet cat = new Pet(); //new出第三个宠物dog2 //2.对比处B Pet dog2 = new Pet("大黄", 4); //通过new一个Pet调用有参构造(重载),生成对象dog2 }
总结
-
类与对象
- 类是一个模板:抽象
- 对象是一个具体的实例:具体
-
方法
- 定义
- 调用
-
对象的引用
- 引用类型 : 8大基本类型,
- 该类型对象是通过引用来操作的,(图解)栈----->堆(地址)
- 引用类型 : 8大基本类型,
-
属性:字段Filed 或称为 成员变量
- 默认初始化 有数字的0 0.0 引用:null char :u0000 boolean: false 几大初始值
- 属性定义
- 修饰符 属性类型 属性名=属性值
String name;
- 修饰符 属性类型 属性名=属性值
-
对象的创建和使用
- 必须使用new关键字创建对象 ,要有构造器
Person person1 = new Person();时要有构造器。 - 调用对象的属性
person1.name - 调用对象的方法
person1.sleep();
- 必须使用new关键字创建对象 ,要有构造器
-
类
-
只有静态的属性 属性
-
和动态的行为 方法
-
封装 继承 多态

浙公网安备 33010602011771号