面向对象(oop)
第一章:设计对象并使用
-
什么是面向对象编程:面向:找,拿 ; 对象 : 东西 ;
简言之:找或拿东西过来编程
-
设计类,创建对象并使用
-
如何设计类
public class 类名{ 1.成员变量(代表属性,一般名词) 2.成员方法(代表行为,一般动词) 3.构造器 4.代码块 内部类 }
-
创建类的对象
类名 对象名 = new 类名();
-
如何创建对象
访问属性:对象名.成员变量
访问行为:对象名.方法名(…);
-
注意:
-
类名首字母建议大写,满足“驼峰模式”,不能用关键字,必须是合法标识符,且有意义
-
一个java文件中可以定义多个class类,但只能一个类是public修饰,且public修饰的类名必须成为代码文件名。
-
成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值
public class Student { //生成.class文件
public String name = “王小二”;
}
class Animal{}
class Dog{}
// 一个Java文件可以定义多个类,但只能一个类是public修饰,且public 修饰的类名必须成为java代码文件的名称,否则报错
~~~ -
-
第二章:对象内存图
1. **垃圾回收:**当堆内存中的对象,没有被任何变量引用时就会被判定为内存中的”**垃圾**“
2. Java存在自动垃圾回收器,会定期进行清理
第三章: 构造器
-
构造器的作用
定义在类中,可以初始化一个类的对象,并返回对象的地址 eg: Car c = new Car()
-
构造器的格式
修饰符 类名(形参列表){ 。。。}
public calss Car{ ... //无参数构造器 public Car(){ } //有参数构造器 public Car(String n ,double p){ } }
-
调用构造器得到对象的格式
类 变量名称 = new 构造器; Car c = new Car();
-
分类和作用
无参数构造器(默认存在):初始化对象时,成员变量的数据均采用默认值。
有参数构造器:在初始化对象的时候,同时可以接受参数对对象进行赋值。
-
注意事项
任何类定义出来,默认就自带了无参数构造器,写不写都有。
一旦定义了有参数构造器,无参数构造器就没有了,如果还想用无参数构造器,需要手写构造器
第四章:this关键字
- this 关键字是什么
-
可以出现在构造器、方法中
-
代表当前对象的地址。
-
用于指定访问当前对象的成员变量、成员方法。
public class Car{ String name; double price; public car(String name,double price){ this.name = name; this.price = price; } }
-
第五章;:封装
- 封装的思想
- 封装:正确设计对象的属性和方法;
- 封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
- 优点:编程变得简单,有什么事情,找对象,掉方法。需要的时候找就可以了
-
更好的封装
- 对成员变量使用private(私有、隐藏)关键字修饰(private修饰的成员只能在当前类中访问);
- 为没跟成员提供配套public修饰的getter、setter方法暴露取值和赋值
第六章:标准JavaBean
- 一知半解:
- JavaBean:称为实体类,对象可以用于在程序中封装数据。
-
标准JavaBean 满足如下的书写要求:
-
成员变量使用private修饰。
-
提供成员变量对应的setXxx()/getXxx()方法
-
必须提供一个无参构造器;有参数构造器是可写可不屑的。
-
eg: // idea 自动生成成员变量提供成套setter和getter方法 右键-generate(ALT+insert)-get and setter-按shift+鼠标左点击 //提供有参数构造器 右键generate-construction(构建)-shift+鼠标点击 //提供无参数构造器 右键generate-construction(构建)-shift+鼠标点击+选择Selectnone package com.itheima.JavaBean; public class User { private String name; private int age; private char sex; public User() {//创建无参数构造器 } public User(String name, int age, char sex) {//创建有参数构造器 this.name = name; this.age = age; this.sex = sex; } //使用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 char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } } package com.itheima.JavaBean; public class Test3 { public static void main(String[] args) { // 1.无参数构造器创建对象封装一个用户信息 User u1 = new User(); u1.setName("虎儿"); u1.setAge(23); u1.setSex('男'); System.out.println(u1.getName()); System.out.println(u1.getAge()); System.out.println(u1.getSex()); // 有参数构造器 User u2 = new User("小明", 22, '女'); System.out.println(u2.getName() + u2.getAge() + u2.getSex()); } }
-
第七章:补充
- 成员变量和局部变量的区别
面向对象的综合案例
- 模仿电影信息展示
// Movie类
package com.itheima.Demo;
public class Movie {
// 1.成员变量
private String name;
private double score;
private String actors;
public Movie() {
}
public Movie(String name, double score, String actors) {
this.name = name;
this.score = score;
this.actors = actors;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getActors() {
return actors;
}
public void setActors(String actors) {
this.actors = actors;
}
}
//test 类
package com.itheima.Demo;
/*
* 目标:完成电影信息*/
public class Test3 {
public static void main(String[] args) {
// 1。设计电影类
// 2.创建3个电影对象,封装电影信息
Movie[] movies = new Movie[3];
movies[0] = new Movie("xxx",8.0,"xxx");
movies[1] = new Movie("神", 6.9, "ddd");
movies[2] = new Movie("神", 6.9, "ddd");
for (int i = 0; i < movies.length; i++) {
Movie m = movies[i];
System.out.println("电影名:"+m.getName());
System.out.println("得分:" + m.getScore());
System.out.println("主演" + m.getActors());
System.out.println("----------------");
}
}
}
Movie m = movies[i];
System.out.println("电影名:"+m.getName());
System.out.println("得分:" + m.getScore());
System.out.println("主演" + m.getActors());
System.out.println("----------------");
}
}
}