本学习内容来着b站:黑马程序员
注:给自己整无语了,打卡失败了,照理来说,这应该是第四天来着,面向对象这块听了一遍没听懂,我又听了一遍,现在感觉有点上道了,但是我知道这只是最简单的,还有更难的再等我,编程路漫漫啊,要继续努力!如果你看到了这篇文章能对你有所帮助,给我点个赞或者评论也是对我更新的最大动力!感谢,内容如果有错误,欢迎各位兄弟姐妹批评指正!!!
一.面对对象需要掌握的内容
1. 啥是面向编程
1.1什么是类,什么是对象
1.2 如何设计类
代码实现:car类
public class Car {
//成员变量
String name;
double price;
//方法
public void start(){
System.out.println(name + "启动了");
}
public void run(){
System.out.println("价格是:" + price + "的" + name +"跑得很快");
}
}
代码实现:测试类
//目标学会设计对象并使用
public class Test1 {
public static void main(String[] args) {
//创建汽车对象
Car c = new Car();
c.name = "宝马";
c.price = 38.9;
System.out.println(c.name);
System.out.println(c.price);
c.start();
c.run();
System.out.println("=============");
Car c1 = new Car();
c1.name = "奔驰";
c1.price = 39.5;
System.out.println(c1.name);
System.out.println(c1.price);
c1.start();
c1.run();
}
}
1.3定义类的注意事项
代码实现:Student类
public class Student {
public String name;
boolean flag;
}
class Animal{
}
class Dog{
}
代码实现:测试类
//目标:理解定义类的几个补充注意事项,为后续知识的学习做准备
public class Test2 {
public static void main(String[] args) {
/*1、类的首字母建议大写,满足驼峰模式,不能使用关键字,
必须是合法标识符,且有意义
2、一个Java文件中可以定义多个class类,但只能一个类是public修饰,
而且通过public修饰的类名必须成为代码文件名
实际开发还是建议一个代码文件只定义一个类
3、成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值:
一般无需指定初始化值,存在默认值
默认值的规则:
byte short int long O
double flat 0.0
boolean false
String等引用类型 null
*/
Student s = new Student();
System.out.println(s.name);
System.out.println(s.flag);
}
}
2.对象内存图
2.1两个对象内存图
2.2 两个变量指同一个对象
代码实现:Student类
public class Student {
String name;
char sex;
String hobby;
public void study(){
System.out.println("名称:" + name + ",性别:" + sex + ",爱好:" + hobby
+ "开始学习了!");
}
}
代码实现:测试类
//目标:理解2个变量指向一个对象的内存机制
public class Test {
public static void main(String[] args) {
//1、创建学生对象
Student s1 = new Student();
s1.name = "小明";
s1.sex = '男';
s1.hobby = "睡觉,游戏,学习";
s1.study();
//把s1变量赋给一个学生类型的变量s2
Student s2 =s1;
System.out.println(s2);
System.out.println(s1);
s2.hobby ="爱提问";
System.out.println(s2.name);//小明
System.out.println(s2.sex);//男
System.out.println(s1.hobby);//爱提问
s2.study();
}
}
当变量赋值为null,Java为定时清理 Java存在自动垃圾回收器
3.学会使用构造器
3.1构造器的作用,分类格式
代码实现:car类
public class Car {
String name;
double price;
//无参数构造器
public Car(){
System.out.println("==无参数构造器被调用了=");
}
//有参数构造器
public Car(String n,double p){
System.out.println("==有参数的构造器被调用了=");
name = n;
price = p;
}
}
代码实现:测试类
//目标:认识构造器,明白两种类型的构造器的作用
public class Test {
public static void main(String[] args) {
//通过调用构造器得到对象
Car c = new Car();
c.name = "宝马";
c.price = 38.9;
System.out.println(c.name);
System.out.println(c.price);
//调用有参构造器
Car c2 = new Car("奔驰",50);
System.out.println(c2.name);
System.out.println(c2.price);
}
}
3.2构造器的注意事项
3.3构造器总结
4.this关键字
4.1this关键字是什么
代码实现:car类
public class Car {
String name;
double price;
//有参构造器
public Car() {
System.out.println("无参数构造器中的this:" + this);
}
public Car(String name, double price) {
this.name = name;
this.price = price;
}
public void gowith(String name) {
System.out.println(this.name + "正在和" + name + "比赛");
}
public void run() {
System.out.println("方法中的this:" + this);
}
}
代码实现:测试类
//目标:理解this关键字的作用
public class Test {
public static void main(String[] args) {
//创建汽车对象
Car c = new Car();
c.run();
System.out.println(c);
System.out.println("==================");
Car c2 = new Car("奔驰",50);
System.out.println(c2.name);
System.out.println(c2.price);
c2.gowith("宝马");
}
}
4.2this关键字的作用
4.3总结
5.封装
5.1什么是封装
5.2 怎么让封装更好
代码实现:Student类
public class Student {
//1、成员变量 使用privates修饰,只能在本类中访问了
private int age;
//2、提供成套的getter和setter方法暴露其取值和赋值
public void setAge(int age){
if(age >= 0 && age <=200 ){
this.age = age;
}else {
System.out.println("您的年龄数据有问题:");
}
}
public int getAge(){
return age;//同一个类里面可以直接返回age
}
}
代码试下:测试类
//目标:学习如何进行更好的封装。
public class Test2 {
public static void main(String[] args) {
Student s = new Student();
s.setAge(23);//赋值
System.out.println(s.getAge());//取值
}
}
6.标准JavaBean
6.1JavaBean是什么
代码实现:User类
public class User {
//1、成员变量使用private
private String name;
private double height;
private double salary;
//3、要求提供无参构造器,有参数构造器是可选
public User() {
}
public User(String name, double height, double salary) {
this.name = name;
this.height = height;
this.salary = salary;
}
//2、必须为成员变量提供成套的setter和getter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
代码实现:测试类
//目标 :记住JavaBean的书写要求
public class Test {
public static void main(String[] args) {
//1、无参数构造器创建对象封装一个用户信息
User u1 = new User();
u1.setName("杭州蔡徐坤");
u1.setHeight(183);
u1.setSalary(19999);
System.out.println(u1.getName());
System.out.println(u1.getHeight());
System.out.println(u1.getSalary());
//3、有参数构造器创建对象封装一个用户信息
User u2 = new User("杭州迪丽热巴",170,19999);
System.out.println(u2.getName());
System.out.println(u2.getHeight());
System.out.println(u2.getSalary());
}
}
7.成员变量和局部变量的区别
二.总结