Day04-类和对象创建/构造器/内存分析/小结
类与对象的创建
类与对象的关系

package com.oop.demo2;
//学生类
//类相对于一个模板,对象是一个实例
//学生类是学生的属性(姓名)方法(能干什么)
//创建的学生对象是一个具体的学生(有头有脸)
public class Student {
//属性:字段
String name;//null
int age;//0
//方法
public void study(){
System.out.println(this.name+"在学习");
}
}
package com.oop;
//一个项目应该只存一个main方法
//一般习惯分屏放在右边,右键点击类名.java然后选择Split right
public class Application {
public static void main(String[] args) {
//类:抽象的,实例化
//类实例化后会返回一个具体的对象!
//student对象就是一个Student类的具体实例
//Student student = new Student();
Student xiaoming = new Student();
Student xh = new Student();
xiaoming.name = "小明";
xiaoming.age = 3;
System.out.println(xiaoming.name);
System.out.println(xiaoming.age);
xh.name = "小红";
xh.age = 3;
System.out.println(xh.name);
System.out.println(xh.age);
}
}
构造器详解

package com.oop.demo2;
//
public class Person {
String name;
int age;
//一个类即使什么都不写,它也会存在一个方法
//显示的定义构造器
//实例化初始值
//1.使用new关键字,必须要有构造器
//2.用来初始化值
// public Person(){
//
// }
//
// //有参构造:一旦定义了有参构造,无参就必须显示定义
// public Person(String name){
// this.name = name;
//
// }
//alt+insert快捷键,选择constructor,直接OK,生成有参;下方选择Select None就生成无参
public Person() {
}
public Person(String name) {
this.name = name;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
/*
public static void main(String[] args) {
//new 实例化一个对象
Person person = new Person("kuangshen",23);
System.out.println(person.name);//qinjiang
}
构造器:
1.和类名相同
2.没有返回值
作用:
1.new 本质调用构造器
2.初始化对象的值
注意点:
1.定义了有参构造之后,如果想使用无参构造,必须显式的定义一个无参的构造
Alt+Insert 会大量使用
this. 代表当前类 = 后面的代表传进来的值
*/
package com.oop;
//一个项目应该只存一个main方法
//一般习惯分屏放在右边,右键点击类名.java然后选择Split right
public class Application {
public static void main(String[] args) {
//new 实例化一个对象
Person person = new Person("kuangshen",23);
System.out.println(person.name);//qinjiang
}
}
创建对象内存分析



package com.oop;
import com.oop.demo03.Pet;
public class Application {
public static void main(String[] args) {
Pet dog = new Pet();//dog是一个变量,相当于一个容器,存放pet()对象的地址
dog.name = "旺财";//对象中的成员变量先默认初始化,再显示初始化
dog.age = 3;
dog.shout();
System.out.println(dog.name);
System.out.println(dog.age);
Pet cat = new Pet();
}
}
package com.oop.demo03;
public class Pet {
public String name;
public int age;
//无参构造
public void shout(){
System.out.println("叫了一声");
}
}
String是final的,所以在常量池里,
3是一个int类型的数字,不是常量
//dog是一个变量,相当于一个容器,存放pet()对象的地址
//对象中的成员变量先默认初始化,再显示初始化
//堆存储对象和数组元素,栈存储系统调用变量(例如引用)
简单小结类与对象
package com.oop;
public class Application {
public static void main(String[] args) {
/*
1.类与对象
类是一个模板:抽象,对象是一个具体的实例
2.方法
定义、调用!
3.对象的引用
引用类型 :除基本类型(8)外
对象是通过引用来操作的:栈--->堆
4.属性:字段Field 成员变量
默认初始化:
数字:0 0.0
char:u0000
boolean:false
引用: null
修饰符: 属性类型 属性名 = 属性值;
5.对象的创建和使用
1)必须使用new关键字创建对象,构造器 Person kuanshen = new Person();
2)对象的属性 kuangshen.name
3)对象的方法 kuangshen.sleep()
6.类:(只能写属性和方法)
静态的属性 属性
动态的行为 方法
封装、继承、多态
*/
}
}
浙公网安备 33010602011771号