Java 面向对象基础
·
1. 什么是面向对象
-
对象: 将零散的数据整合起来成为一个整体, 这个整体即对象, 即把相关数据和方法组织为一个整体来看待
-
面向对象: 利用对象进行软件开发
-
JavaBean类: 用来描述一类事物的(属性/行为)
2. 类和对象
2.1 类的定义
类的组成是由属性和行为两部分组成
-
属性: 在类中通过成员变量来体现(类中方法外的变量)
-
行为: 在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
类的定义步骤:
①定义类
②编写类的成员变量
③编写类的成员方法
public class 类名 {
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
…
// 成员方法
方法1;
方法2;
}
2.2 对象的使用
-
创建对象的格式:
- 类名 对象名 = new 类名();
-
调用成员的格式:
-
对象名.成员变量
-
对象名.成员方法();
-
创建对象
格式:类名 对象名 = new 类名();
范例:Phone p = new Phone();
使用对象
1:使用成员变量
格式:对象名.变量名
范例:p.brand
2:使用成员方法
格式:对象名.方法名()
范例:p.call()
3. 面向对象的小细节
- 描述一类事物的类叫JavaBean类
- 带有main方法的类叫测试类
- JavaBean类可以写属性和行为
4. 面向对象中的数据安全问题
4.1 privat关键字
private -> 私有
-
权限修饰符, 可以修饰成员变量和成员方法
-
特点: 被privat修饰后, 只能在本类中才能访问, 外界无法访问
- 私有化成员变量
- 每个变量都要有set(设置)/get(得值) 方法,用public修饰
4.2 this关键字
-
this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)
-
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量
-
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量
-
public class Student {
private String name;
private int 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);
}
}
- 就近原则: 在方法中直接使用变量查找顺序, 先找局部变量, 再找成员变量
5. 构造方法
构造方法是一种特殊的方法
-
作用:创建对象 Student stu = new Student();
-
格式:
public class 类名{
修饰符 类名( 参数 ) {
}
}
-
功能:主要是完成对象数据的初始化
特点:
- 方法名与类名相同, 大小写也一致
- 没有返回值类型, void也没有
- 没有具体返回值(不能用return带回数据结果)
执行时机:
- 创建对象的时候由虚拟机调用, 不能手动调用构造方法
- 每创建一次对象, 就会调用一次构造方法
eg:
package oop.ooptext6;
public class Student {
//属性: 姓名, 年龄, 性别, 身高
private String name;
private int age;
private String gender;
private double height;
//构造方法
//习惯: 1.空参 2. 带全部参数的构造方法
public Student() {
System.out.println("空参构造方法被调用");
}
public Student(String name, int age, String gender, double height) {
this.name = name;
this.age = age;
this.gender = gender;
this.height = height;
System.out.println("带全部参数的构造方法被调用");
}
}
package oop.ooptext6;
public class Text {
public static void main(String[] args) {
//创建对象
Student s = new Student("张三", 23, "男", 175);
}
}
构造方法的注意事项
- 若无定义构造方法, 系统将给出一个默认无参数构造方法
- 若写了任意构造方法, 系统将不再提供默认的构造方法
- 带参数的构造方法与无参数构造方法, 方法名相同, 但参数不同, 这便是构造方法的重载
- 习惯: 无论使用与否, 都将手动书写无参数的构造方法, 和带全部参数的构造方法
6. 总结
public class 类名{
私有化变量
无参构造
带全部参数的构造
get/set方法
...
}
tip: 自动生成构造方法/set/get
快捷键: Alt+insert / Alt+Fn+Del
eg:
package oop.opptext10;
public class Student {
//属性:姓名, 年龄
private String name;
private int age;
//构造方法
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
//get/set
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//行为: 学习, 吃饭, 睡觉
public void study(){
System.out.println(name+"在学习");
}
public void eat(){
System.out.println(name+"在吃饭");
}
public void sleep(){
System.out.println(name+"在睡觉");
}
}
package oop.opptext10;
public class Text {
public static void main(String[] args) {
Student s = new Student("张三", 18);
s.study();
s.eat();
s.sleep();
}
}
更多推荐

所有评论(0)