类和对象的学习。
1、 什么是类?
class 就是声明一个类。
概念:一类事物的总体描述,及该事物包含方法的总称。
属性: 描述这个事物的
方法: 这个事物特有的行为。
定义一个学生类:
属性:
名字
年龄
性别
方法:
吃饭
睡觉
学习
打游戏
2、封装一个学生类。
定义一个学生类:class Student
属性:
名字 String name;
年龄 int age;
性别 char sex;
方法:
吃饭 eat();
睡觉 sleep();
学习 study();
打游戏 playGame();
代码实现,封装一个学生类:
class Student{
String name;
int age;
char sex;
public void eat(){
System.out.println("学生会吃饭");
}
public void sleep(){
System.out.println("学生会睡觉");
}
public void study(){
System.out.println("学生会学习");
}
public void playGame(){
System.out.println("学生不会打游戏");
}
}
3、权限修饰词的学习。
public 公共的
被public 修饰的东西,同一个项目中,所有包下面的类,都能够调用访问。
private 私有的
被private 修饰的东西,只能在本类中 调用访问。
protect 受保护的
被protect 修饰的东西,受保护的,只能在同一包名下,被调用访问。
static
被static 修饰的东西,随着类的加载而加载。
最先加载到内存,随时准备着,被使用。
变量,方法,都可以被static 修饰。
静态代码块:
static{
类加载的时候就自动执行的代码。可以放在我们定义个静态代码快中。
优先加载,创建,执行。等等操作。
}
4、局部变量和成员变量的区别。
成员变量 :
(1)定义的位置:类中,方法外。一般定义在最上面。
(2)作用域 :所有的类中成员,都可以共用该 成员变量。
(3)初始化区别: 成员变量,可以先声明,不赋值,使用的时候在初始化赋值。
局部变量 :
(1)定义的位置 :定义在方法中,或者方法上。
(2)作用域 :只有方法内部,才能用,出了方法用不了。
(3)初始化区别: 局部变量,声明的时候必须初始化,否则不能用。
5、创建一个学生类的对象,然后进行使用。
之前定义了学生类,那么学生类怎么用?
创建一个具体的对象,来调用该对象所在类中方法。
(1)创建对象格式:
类的类型 对象名称 = new 类的类型();
(2) 给学生类的属性赋值。
对象名称.属性名 = 具体的值。
(3)调用对象 包含的方法,执行一系列操作。
对象名称.方法名();
6、在java思想里面,有封装的概念。就是把事物封装成一个类。
特点:
隐藏实现细节(private),
对外提供,公共的访问方式(public)。
Student 类中,那些数据不想让人访问。要实现那些细节的隐藏。
哪些东西,对外可以提供公共访问方式?
给student 类添加公共的访问方式。
通过set 和get 方法,来操作类中私有的属性。
set 方法 : 设置该类的属性值。
public void setName(String name){
this.name = name;
}
注意: 在方法中,如何调用当前类中成员位置的属性。
用 this.属性名 来调用。
this代表的是当前类的对象。
get 方法 : 获取该类的属性值。
例如: 通过getName 方法调用,拿到对象的名字。
public String getName(){
return name;
}
注意: 变量访问,有优先级问题。
从小的范围往大的范围找。
(就近原则)
7、 类的封装,对象的创建练习。
需求:
创建一个手机类 Phone
属性: (全部私有private)
品牌:brand
价格:price
方法:(全部公开 public)
对应属性的get set 方法。
打电话: call()
发短信: sendMessage()
玩游戏: playGame()
具体代码:
========手机类========
/**
*
*类的封装,对象的创建练习。
需求:
创建一个手机类 Phone
属性: (全部私有private)
品牌:brand
价格:price
方法:(全部公开 public)
对应属性的get set 方法。
打电话: call()
发短信: sendMessage()
玩游戏: playGame()
*/
public class Phone {
private String brand; //声明手机的品牌属性。
private int price; //声明手机的价格属性。
/**
* 手机品牌属性,设置方法。
*/
public void setBrand(String brand){
this.brand = brand;
}
/**
* 手机品牌属性,获取方法。
*/
public String getBrand(){
return brand;
}
/**
* 手机价格属性,设置方法。
*/
public void setPrice(int price){
this.price = price;
}
/**
* 手机价格属性,获取方法。
*/
public int getPrice(){
return price;
}
public void call(){
System.out.println(brand + "具有打电话的功能!");
}
public void sendMessage(){
System.out.println(brand + "具有发短信的功能!");
}
public void playGame(){
System.out.println(brand + "具有玩游戏的功能!");
}
}
========手机类的测试类。========
public class Test02_Phone {
public static void main(String[] args) {
//1、创建 手机类的 具体的对象。
Phone p = new Phone();
//设置手机对象的,品牌和价格。
p.setBrand("华为Pro30");
p.setPrice(4999);
System.out.println(p.getBrand()+"----"+p.getPrice());
p.call();
p.sendMessage();
p.playGame();
}
}
8、 类的封装中的,toString 方法。
返回 所有类中,定义的属性 对应的值。
/**
* 通过调用这个放,想要输出打印所有的属性 值
*/
public String toString(){
String print_phone = "该手机品牌为:" + brand +"\n该手机的价格为:"+price;
return print_phone;
}