类是对现实生活中一类具有共同属性和行为的事物的抽象
类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
简单理解:类就是对现实事物的一种描述
属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
行为:指事物能执行的操作,例如:手机事物(打电话,发短信)
类:类是对现实生活中一类具有共同属性和行为的事物的抽象(类似某种物体的设计图)
对象:是能够看得到摸的着的真实存在的实体(根据类创立出的具体事务)
简单理解:类是对事物的一种描述,对象则为具体存在的事物,他表示一类对象的共有特性
1.成员变量(一般不赋值)
2.成员方法
3构造器(后面在学)
4.代码块(后面在学)
5.内部块(后面在学)
}
Javabean类里面不写main方法
带main方法的叫测试类
我们可以在测试类中建立javabean的对象,并赋值使用
(1) 类名首字母建议大写
(2)一个Java文件中可以有多个class,但是只有一个class用public修饰
没什么用,建议一个文件里只有一个类
成员:提取名词(例如注册系统里用户名,密码,验证码..)
方法:提取动词组(例如注册系统里修改,删除,创建,登录....)
格式:类名 对象名 = new 类名();
范例:Phone p = new Phone();
Scanner sc = new Scanner();
使用对象(类似结构体?)
格式:对象名.变量名
范例:p.brand = ....
格式:对象名.方法名()
范例:p.call();
*/
public class Phone {
//成员变量
String brand;
int price;
//成员方法
public void call() {
System.out.println("打电话");
}
public void sendMessage() {
System.out.println("发短信");
}
}
public class duixiang {
public static void main(String[] args) {
Phone p = new Phone();
p.price = 1988;
p.brand = "小米";
System.out.println(p.brand);
System.out.println(p.price);
p.call();
p.sendMessage();
}
封装:是面向对象三大特征之一(封装,继承,多态),它告诉我们如何正确设计对象的属性和特征。
例如:对于人关门这个动作,有两个对象(人和门),而关门这个方法(public void close();)要写在门类里面,而不是人里面,可以理解为人给力,然后门自己关上了(我认为还是比较好理解的)。
好处:Java发布的时候已经写好了很多现成的类了,你只需要建立对象然后调用就行了。
例如:Scanner sc = new Scanner();
int score = sc.nextInt();
就有了Scanner这个类了,Scanner里面有nextInt()这个方法,你只需要直接调用就行了,不用管nextInt()怎么运行的,这也是Java比c好的地方,c是面向过程,Java是面向对象。
Java有一个JDK API文档,里面就是写好的类,用时查看即可,只需要记住几个常用的
private(私有)是一个修饰关键字,表示只能在本类中使用。
public(共有) 是一个修饰关键字,表示你可以在所有类中使用。
public class Phone {
//成员变量
String brand;
private int price;
}
public class duixiang {
public static void main(String[] args) {
Phone p = new Phone();
p.price = 1988;//错误,不可使用price
}
2.为什么使用private,对于某些变量,它符合程序但不符合现实逻辑(如你输入手机价格为1000w,代码上可以,但现实中没有手机一千万),所以我们要再类中进行筛选(创建方法),将符合逻辑的留下来,不符合的提示错误
一般来说创建一个set()赋值和get()获取
class Student {
//成员变量
String name;
private int age;
//提供get/set方法
public void setAge(int a) {
if(a<0 || a>120) {
System.out.println("你给的年龄有误");
} else {
age = a;
}
}
public int getAge() {
return age;
}
//成员方法
public void show() {
System.out.println(name + "," + age);
}
}
/*
学生测试类
*/
public class StudentDemo {
public static void main(String[] args) {
//创建对象
Student s = new Student();
//给成员变量赋值
s.name = "林青霞";
s.setAge(30);
//调用show方法
s.show();
}
}
对于类中的变量叫做成员变量,方法中的变量叫做局部变量,如果一个成员变量和局部变量重名,哪个定义的近就用哪个,成为就近原则。
对于成员变量有默认初始值,局部变量则没有,必须赋值才能使用。
成员变量存在堆区域,局部变量存在栈区域中。
成员变量随着对象创建和消失而创建和消失,局部变量仅在调用方法时才存在。
class Student {
//成员变量
private String name;//成员变量
private int age;
//get/set方法
public void setName(String n) {//n是局部变量
name = n;
}
}
如上述代码,对于一个变量名称,我们要见名知意,n这个名字不好,改成name,但会报错
class Student {
//成员变量
private String name;//成员变量
private int age;
//get/set方法
public void setName(String name) {
name = name;//错误!!!
}
}
对此,我们引入this关键字,this.变量名,会认为是使用的成员变量,而不是方法变量
class Student {
//成员变量
private String name;//成员变量
private int age;
//get/set方法
public void setName(String name) {
this.name = name;//正确!!!
}
}
构造方法(一个名词)是一种特殊的方法。
作用:在创建对象时给成员变量赋值
构造:构造方法的方法名要与类名一模一样(包括大小写),不能加返回值类型(void Int char....)与return。分为带参和空参构造方法。
带参构造方法:在初始化对象时可以同时为对象赋值。
空参构造方法:在初始化对象时使用默认值。
调用:创建对象时有虚拟机调用,不可手动调用,每创建一次对象,就会手动调动
例子:Scanner sc = new Scanner(System.in);//这个标红的就是构造方法(带参数)
类 对象 = 关键字 构造方法
注意事项:1.若你没有写构造方法,系统会自动给你写一个空参的构造方法。
2.若你提供了一个构造方法,系统将不会提供默认构造方法(即你写了带参的, 就不会有空参的构造方法)
3.建议,空参和带参的都写一遍
① 类名需要见名知意
② 成员变量使用private修饰
③ 提供至少两个构造方法
* 无参构造方法
* 带全部参数的构造方法
④ get和set方法
提供每一个成员变量对应的setXxx()/getXxx()
⑤ 如果还有其他行为,也需要写上
快捷键(vscode)
//快读生成javabean,写好成员变量后,直接右键,找到源代码操作,generate constuctors 是生成构造方法()
//选择成员变量就是带参数,不选就是空参
//generate getterandsetter