最近在跟java部分的学习,打算一个月内将Java基数部分重新做一下笔记,力求完整,细节。内容包含基础笔记,思维导图,大量巩固基础、提高的练习题
java基础 面向对象 this关键字 JavaBean的概念 思维导图 大量习题
1、思维导图
2、基础笔记
2.1 面向对象的概念
2.1.1什么是面向过程?什么又是面向对象?
- 面向过程——步骤化
面向过程就是分析出实现需求所需要的步骤,通过函数(方法)一步一步实现这些步骤,接着依次调用即可
- 面向对象——行为化(概念相对抽象,可结合下面的例子理解)
面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成类(类实例化后才是对象),创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为
2.2类是什么,对象和类之间的关系:
-
类(设计图) :是对象共同特征的描述;
-
对象:是真实存在的具体实例。
-
在Java中,必须先设计类,才能创建对象并使用。
类的结构
public class 类名 {
1、成员变量(代表属性,一般是名词)
2、成员方法(代表行为,一般是动词)
3、构造器 ()
4、代码块 ()
5、内部类 ()
}
简单表示:
public class Car {
//属性(成员变量)
String name;
double price;
//行为(方法)
public void start(){}
public void run(){}
}
如何得到类的对象:
类名 对象名 = new 类名();
Car c = new Car();
如何使用对象:
访问属性: 对象名.成员变量
访问行为: 对象名.方法名(…)
定义类的补充:
- 类名首字母建议大写,且有意义,满足“驼峰模式”。
- 一个Java文件中可以定义多个class类,但只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。实际开发中建议还是一个文件定义一个class类。
- 成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值; 一般无需指定初始化值,存在默认值。
成员变量的默认值规则:
两个对象的内存图:
2.3 构造器的使用
构造器的作用:
定义在类中的,可以用于初始化一个类的对象,并返回对象的地址。
构造器的分类和作用:
- 无参数构造器(默认存在的):初始化对象时,成员变量的数据均采用默认值。
- 有参数构造器:在初始化对象的时候,同时可以接收参数为对象进行赋值。
构造器的注意事项:
- 任何类定义出来,默认就自带了无参数构造器,写不写都有。
- 一旦定义了有参数构造器,那么无参数构造器就没有了,如果还想用无参数构造器,此时就需要自己手写一个无参数构造器了。
2.4 this关键字的使用
-
可以出现在构造器、方法中
-
代表当前对象的地址
2.5 封装的概念:
- 封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为
- 为每个成员变量提供配套public修饰的的getter、setter方法暴露其取值和赋值。
- 一般建议对成员变量使用private(私有、隐藏)关键字修饰进(private修饰的成员只能在当前类中访问)。
public class Student {
//1、private
private int age;
//2、提供公开的public修饰setter和getter方法
//暴漏成员变量的赋值和取值
public void setAge(int age){
if (age >= 0 & age <= 200){
this.age = age;
}else {
System.out.println("年龄数据非法~~");
}
}
public int getAge(){
return age;
}
}
2.6 局部变量和成员变量的区别
3、案例练习题
题目:
需求
使用面向对象编程,模仿电影信息的展示。
代码:
Movie 类
/*
电影类
*/
public class Movie {
/**
* 1、定义成员变量
*/
private String name;//名词
private String actor;//主演
private double score;//评分
private double price;//价格
/**
3、构造器
*/
public Movie(){
}
public Movie(String name, String actor, double score, double price) {
this.name = name;
this.actor = actor;
this.score = score;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
Test 类 (此包调用Movie 类)
public class Test {
public static void main(String[] args) {
// 目标:模仿电影信息页的展示。使用面向对象编程。
// 1、创建3部电影对象,封装3部电影的信息。
// 2、创建一个数组容器,可以装电影对象。
Movie[] movies = new Movie[3];//电影类型的数组,存储3个电影对象的地址
movies[0] = new Movie("《长津湖》", "吴京", 9.6, 49.5);
movies[1] = new Movie("《我父辈》", "吴京", 9.6, 49.5);
movies[2] = new Movie("《水少美女》", "王传", 9.6, 49.5);
// movies = [m1地址, m2地址, m3地址]
// 0 1 2
// 3、遍历电影类型的数组
for (int i = 0; i < movies.length; i++) {
// 提取每个位置的电影对象的地址交给电影类型的变量m记住。
Movie m = movies[i];
System.out.println(m);
System.out.println("电影名:" + m.getName());
System.out.println("主演:" + m.getActor());
System.out.println("评分:" + m.getScore());
System.out.println("票价:" + m.getPrice());
System.out.println("---------------------------");
}
}
}