继续补充完成java面向基础对象学习的第二部分,本章内容主要包括构造器和this以及javabean和封装等思想,感觉仍然需要更多练习才能帮助熟练java面向对象基础部分
目录
Car c = new Car ();
修饰符 类名 ( 形参列表 ){...}
public class Car {
...// 无参数构造器public Car (){...}// 有参数构造器public Car ( String n, String b){...}}
类型 变量名称 = new 构造器;Car c = new Car ();
任何类定义出来,默认就自带了无参数构造器,写不写都有。
一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写一个无参数构造器了。

调用无参数构造器

调用有参数构造器

this关键字是什么
代表当前对象的地址

上图中this表示与 c 的地址一样,都指向new Car(), 如果调用了c.run(),那么run里面的c也指向new Car()
在写代码的时候如果用以下的代码去写往往是被诟病的,因为n,和p没有实际意义,
- public class Car {
- String name;
- double price;
- public Car(String n , double b){
- name = n;
- price = b;
- }
- }
如果用了this关键字就可以正确的表示,表示为上面第一个String name里面的name赋值和double price 里面的price赋值
- public class Car {
- String name;
- double price;
- public Car(String name , double price){
- this.name = name;
- this.price = price;
- }
- }
样例

错误的表示
public class Car {String name ;double price ;public void goWith ( String name){System . out .println(name + " 正在和 " + name + " 一起比赛!! " );}}

正确的表示
public class Car {String name ;double price ;public void goWith ( String name){System . out .println( this .name + " 正在和 " + name + " 一起比赛!! " );}}
例子
一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只能在当前类中访问。
提供public修饰的公开的getter、setter方法暴露其取值和赋值。
在赋值给一个学生年龄的例子中非常容易出现,入过学生的年龄错误了,为负数,仍然会继续输入,那么该如何修改呢,这是就需要封装,通过一定暴露和封装完成

测试案例 对象
- package movieDemo;
-
- public class Test {
- public static void main(String[] args) {
- //1、设计电影类
- //2、创建三个电影对象,分装电影信息
- //3、定义一个电影类型数组,存储电影的对象
- Movie[] movies = new Movie[3];
- movies[0] = new Movie("长津湖",9.7,"吴京");
- movies[1] =new Movie("我和我的父辈",9.6,"吴京");
- movies[2] = new Movie("五个扑水的少年",9.5,"王川");
-
- //4、遍历数组中每个对象
- 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.getActor());
- System.out.println("-------------------");
- }
- }
- }
类
- package movieDemo;
-
- import javax.swing.*;
-
- public class Movie {
- //1、成员变量
- private String name;
- private double score;
- private String actor;
-
- //创建无参数构造器
-
- public Movie() {
-
- }
-
- //创建有参数构造器
-
- public Movie(String name, double score, String actor) {
- this.name = name;
- this.score = score;
- this.actor = actor;
- }
-
-
- // 2、getter +setter
-
- 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;
- }
- }