一、面向对象的三大特征
封装、继承、多态
封装告诉我们如何正确设计对象的属性和方法
封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
1.一般建议对成员变量使用private(私有、隐藏)关键字修饰进。
2.为每个成员变量提供配套public修饰的getter、setter方法暴露其取值和赋值。
package com.study.oop.encapsulation;
//目标:学习如何进行更好的封装
public class Test2 {
public static void main(String[] args) {
Student s =new Student();
s.setAge(23);
System.out.println(s.getAge());
}
}
package com.study.oop.encapsulation;
import javax.swing.plaf.PanelUI;
public class Student {
//1.成员变量使用private修饰,只能在本类中访问
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;
}
}
二、JavaBean
1.也可称为实体类,其对象可以用于在程序中封装数据。
标准JavaBean须满足如下书写要求:
1.成员变量用private修饰
2.提供成员变量对应的getxxx/setxxx方法。
3.必须提供一个无参构造器,有参构造器可写可不写。
四、成员变量和局部变量的区别
面向对象案例
package com.study.oop.demo02;
public class Movie {
private String name;
private double score;
private String actor;
public Movie(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
public Movie() {
}
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 getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public static void getMovie(Movie[] movies) {
for (int i = 0; i < movies.length; i++) {
System.out.println("影片名:" + movies[i].getName());
System.out.println("评分:" + movies[i].getScore());
System.out.println("主演:" + movies[i].getActor());
System.out.println("============================");
}
}
}
package com.study.oop.demo02;
import static com.study.oop.demo02.Movie.getMovie;
public class Test {
public static void main(String[] args) {
//使用面向对象思想模仿电影信息展示
//1.定义一个数组将三个电影对象存入数组
Movie[] movies = new Movie[3];
movies[0] = new Movie("《触不可及》", 9.8, "布莱恩·克兰斯顿");
movies[1] = new Movie("《肖申克的救赎》", 9.7, "蒂姆·罗宾斯");
movies[2] = new Movie("《霸王别姬》", 9.6, "张国荣");
//2.调用方法访问电影信息。
getMovie(movies);
}
}
运行效果图: