【Java基础05】面向对象01
文章目录
- 1. 设计对象并使用
- 1.1 类与对象
- 1.2 封装
- 1.2.1 private关键字
- 1.2.2 this关键字
- 成员变量和局部变量的区别
- 1.2.3 构造方法
- 1.2.4 标准JavaBean类
- 1.3 对象内存图
本文部分参考这篇博客
1. 设计对象并使用
1.1 类与对象
public class 类名{1、成员变量(代表属性,一般是名词)2、成员方法(代表行为,一般是动词)3、构造器: (后面学习) 4、代码块 (后面学习)5、内部类 (后面学习)
}
public class Phone {//属性String brand;double price;//行为public void call(){System.out.println("手机打电话");}public void playGame(){System.out.println("玩游戏");}
}
- 创建对象的格式:
- 类名 对象名 = new 类名();
- 调用成员的格式:
- 对象名.成员变量
- 对象名.成员方法();
public class Main {public static void main(String[] args) {Phone P = new Phone(); P.brand = "iphone";P.price = 9999.99;System.out.println(P.brand);System.out.println(P.price);P.call();P.playGame();}
}
注意事项:
Javabean类(就是描述事物的类),不需要写main方法。
编写main方法的类,叫测试类
一个文件其实可以有多个类,不过只能有一个public类,文件名要和public类一致,不过实际开发中还是一个文件定义一个class类比较好。
定义成员变量可以初始化,也可以不初始化,有默认值:
基本类型:0/0.0/flase
引用类型(类、数组、接口、String):null
1.2 封装
面向对象三大特征:封装、继承、多态
对象代表什么,就得封装对应的数据,并提供数据对应的行为
注意:谁的行为就设计谁的方法与属性
封装的目的是将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。比如成员变量private,提供对应的getXxx()/setXxx()方法。
封装的好处:
- 对象代表什么,就得封装对应的数据,并提供数据对应的行为
- 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要时去找就行
1.2.1 private关键字
private是一个权限修饰符,可以修饰成员 (成员变量和成员方法),被private修饰 的成员只能在本类中才能访问。
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作:
- 提供“setXxx(参数)”方法,用于给成员变量赋值,方法用public修饰。
- 提供“getXxx()"方法,用于获取成员变量的值,方法用public修饰
1.2.2 this关键字
(1)this修饰的变量用于指代成员变量,其主要作用是区分局部变量和成员变量的重名问题。
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量(而且会就近原则,形参离它更近,会调用形参而不是成员变量)。
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量。
(2)this代表所在类的对象。方法被哪个对象调用,this就代表哪个对象
成员变量和局部变量的区别
1.2.3 构造方法
构造方法也叫作构造器、构造函数。
- 作用:创建对象的时候给成员变量进行初始化。
public class 类名{修饰符 类名(参数){}
}class Student {private String name;private int age;//构造方法public Student() {System.out.println("无参构造方法");}public void show() {System.out.println(name + "," + age);}
}
/*测试类*/
public class StudentDemo {public static void main(String[] args) {//创建对象Student s = new Student();s.show();}
}
注意事项:
-
构造方法的创建
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法 -
构造方法的重载
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法 -
推荐的使用方式
无论是否使用,都手工书写无参数构造方法
1.2.4 标准JavaBean类
① 类名需要见名知意
② 成员变量:private修饰
③构造方法:提供至少两个
- 无参构造方法
- 带全部参数的构造方法
④ 成员方法:
- 提供每一个成员变量对应的setXxx()/getXxx()
- 提供一个显示对象信息的show()
⑤ 如果还有其他行为,也需要写上
- 示例代码:
class Student {//成员变量private String name;private int age;//构造方法public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}//成员方法public void setName(String name) {this.name = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}public void show() {System.out.println(name + "," + age);}
}
/*创建对象并为其成员变量赋值的两种方式1:无参构造方法创建对象后使用setXxx()赋值2:使用带参构造方法直接创建带有属性值的对象
*/
public class StudentDemo {public static void main(String[] args) {//无参构造方法创建对象后使用setXxx()赋值Student s1 = new Student();s1.setName("林青霞");s1.setAge(30);s1.show();//使用带参构造方法直接创建带有属性值的对象Student s2 = new Student("林青霞",30);s2.show();}
}
1.3 对象内存图
见视频