1.类和对象是什么?
类:是共同特征的描述(设计图);
对象:是真实存在的具体实例。
2.如何设计类?
1).成员变量(代表属性的,一般都是名词)
2).成员方法(代表行为的,一般是动词)
3.如何创建对象?
类名 对象名 = new 类名();
4.拿到对象后怎么访问对象的信息?
对象.成员变量
对象.成员方法(…)
5.类名首字母建议大写,满足驼峰模式,不能用关键字,必须是合法标识符,且有意义
6.一个Java文件中可以定义多个class类,但只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。
7.成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;
一般无需指定初始化,存在默认值。
8.对象到底是放在哪个位置?
堆内存中
9. CarObject car = new CarObject();car变量名中存储的是什么?
存储额是对象在内存中的地址。
10.成员变量(name、price)数据放在哪里?存在哪个位置?
对象中,存在于堆内存中
实例:public class CarObject {
String name;
double price;
public void start(){
System.out.println(name + "启动了");
}
public void run(){
System.out.println("价格是:" + price + "万的" + name + "跑的很快");
}
}
1.构造器的作用?
初始化类的对象,并返回对象的地址。
2.构造器有几种,各自的作用是什么?
无参数够赞其:初始化对象时,成员变量的数据均采用默认值。
有参数构造器:在初始化对象的时候,同时可以接受参数为对象赋值
3.构造器有哪些注意事项?
任何类定义出来,默认就自带了无参数构造器,写不写都有。
一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写无参数构造器。
public class Car {
String name;
double price;
//无参构造器
public Car() {
System.out.println("无参构造器");
}
//有参构造器
public Car(String n,double p){
System.out.println("有参构造器");
name = n;
price = p;
}
}
public class Test {
public static void main(String[] args) {
//通过调用构造器得到对象
Car c = new Car();
System.out.println(c.name);
System.out.println(c.price);
//调用有参数构造器
Car c2 = new Car("奔驰",39.8);
System.out.println(c2.name);
System.out.println(c2.price);
}
}
1.this关键字是什么?
出现在构造器和成员方法之中,代表当前对象的地址。
2.this关键字在构造器中、成员方法中可以做什么?
用于指定访问当前对象的成员。
3.什么是封装?
告诉我们,如何正确设计对象的属性和方法。
原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
4.理解封装思想有什么好处?
让编程边的很简单,有什么事,找对象,调方法就行。
降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象的那么多方法,有需要时去找就行。
public class Car {
String name;
double price;
public Car(){
System.out.println("无参数构造器中的this:" + this);
}
//有参构造器
public Car(String name, double price) {
this.name = name;
this.price = price;
}
public void run(){
System.out.println("方法中的this:" + this);
}
public void goWith(String name){
System.out.println(this.name + "正在和" + name + "比赛");
}
}
//理解this关键字的作用
public class Test {
public static void main(String[] args) {
//创建汽车对象
Car car = new Car();
car.run();
System.out.println(car);
System.out.println("-----------------");
Car car1 = new Car("奔驰",39.9);
System.out.println(car1.name);
System.out.println(car1.price);
car1.goWith("宝马");
}
}
public class Student {
//1.成员变量,使用private修饰,只能在本类中访问了。
private int age;
public void setAge(int age) {
if (age>=0 && age <= 110) {
this.age = age;
}else {
System.out.println("您的年龄数据有问题");
}
}
public int getAge() {
return age;
}
}
//学习如何进行更好的封装
public class Test2 {
public static void main(String[] args) {
Student s = new Student();
s.setAge(-23);
System.out.println(s.getAge());
}
}
1.JavaBean
也可以称为实体类,器对象可以用于在程序中封装数据。
2.标准的JavaBean须满足如下书写要求:
成员变量使用private修饰。
提供成员变量对应的setter和getter方法
必须提供一个无参构造器,有参构造器可写可不写。
public class Movie {
//1.成员变量
private String name;
private double score;
private String actor;
public Movie() {
}
public Movie(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
public String getName() {
return name;
}
//2.getter + setter
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
}
public class Test2 {
public static void main(String[] args) {
//1.设计电影类
//2.创建3个电影对象,封装电影的信息
//3.定义一个电影类型的数组,存储3部电影对象
Movie[] movies = new Movie[3];
//数组中存储的元素并不是对象本身,而是对象的地址。
movies[0] = new Movie("《长津湖》",9.7,"吴京");
movies[1] = new Movie("《我和我的父辈》",9.6,"吴京");
movies[2] = new Movie("《扑水少年》",9.5,"王川");
//4.遍历数组中的每个电影对象,然后获取它的信息并展示出来
for (int i = 0; i < movies.length; i++) {
Movie movie = movies[i];
System.out.println("电影名: " + movie.getName());
System.out.println("评分: " + movie.getScore());
System.out.println("主演: " + movie.getActor());
System.out.println("--------------------------");
}
}
}
综合实例:购物车基础小案例
public class Goods {
int id; //标号
String name; //名称
double price; //价格
int buyNumber; //商品数量
}
public class ShopCarTest {
public static void main(String[] args) {
//1.定义商品类,用于后期创建商品对象
//2.定义购物车对象,使用一个数组对象表示。
Goods[] shopCar = new Goods[100];
//3.搭建操作架构
while (true) {
System.out.println("请您选择如下命令进行操作:");
System.out.println("添加商品到购物车:add");
System.out.println("在购物车查询商品:query");
System.out.println("修改商品购买数量:update");
System.out.println("结算购买商品的金额:pay");
Scanner sc = new Scanner(System.in);
System.out.println("请您输入命令:");
String command = sc.next();
switch (command) {
case "add":
//添加商品到购物车
addGoods(shopCar, sc);
break;
case "query":
//在购物车查询商品
queryGoods(shopCar);
break;
case "update":
//修改商品购买数量
updateGoods(shopCar, sc);
break;
case "pay":
//结算购买商品的金额
pay(shopCar);
break;
default:
System.out.println("没有该功能");
break;
}
}
}
public static void pay(Goods[] shopCar) {
queryGoods(shopCar);
//1.定义一个求和变量累加金额
double money = 0;
//2.遍历购物车数组中的全部商品对象,累加单价*数量
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i] != null) {
Goods g = shopCar[i];
money += (g.price * g.buyNumber);
}else {
break;
}
}
System.out.println("订单总金额:" + money);
}
public static void updateGoods(Goods[] shopCar, Scanner sc) {
//用户输入要修改的商品id,根据id查询出要修改的商品对象
while (true) {
System.out.print("请您输入要修改的商品id:");
int id = sc.nextInt();
Goods g = getGoodsById(shopCar, id);
if (g == null) {
//没有商品
System.out.println("该购物车没有此商品!");
} else {
//说明存在该商品,可以修改
System.out.println("请您输入" + g.name + "商品最新购买数量");
int buyNumber = sc.nextInt();
g.buyNumber = buyNumber;
System.out.println("修改完成");
queryGoods(shopCar);
break;
}
}
}
public static Goods getGoodsById(Goods[] shopCar, int id) {
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null) {
//判断这个商品的id是否是我们要找的
if (g.id == id) {
return g;
} else {
return null;
}
}
}
return null;
}
//查询购物车商品
public static void queryGoods(Goods[] shopCar) {
System.out.println("=============购物车商品信息如下===============");
System.out.println("编号tt名称ttt价格ttt购买数量");
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if (g != null) {
//展示这个商品对象
System.out.println(g.id + "tt" + g.name + "ttt" + g.price + "ttt" + g.buyNumber);
} else {
//遍历结束
break;
}
}
}
//商品添加到购物车功能
public static void addGoods(Goods[] shopCar, Scanner sc) {
//1.录入用户输入的购买商品的信息
System.out.println("请您输入购买商品的编号(不重复):");
int id = sc.nextInt();
System.out.println("请您输入商品的名称:");
String name = sc.next();
System.out.println("请您输入购买商品的数量:");
int buyNumber = sc.nextInt();
System.out.println("请您输入购买商品的价格:");
double price = sc.nextDouble();
//2.把购买商品的商品信息封装成一个商品对象
Goods good = new Goods();
good.id = id;
good.buyNumber = buyNumber;
good.name = name;
good.price = price;
//3.把商品对象添加到购物车数组中去
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i] == null) {
//说明此位置没有元素存入,把我们新买的商品添加到此处即可;
shopCar[i] = good;
break; //结束
}
}
System.out.println("您的商品:" + good.name + "添加到购物车");
}
}



