大纲
Day07(Java面向对象)学习目标
【学习目标】理解、了解、应用、记忆
通过今天的学习,参训学员能够:(解释的时候说出二级目标的掌握程度)
- 【应用】面向对象概述
- 【理解】能够阐述面向对象思想与面向过程思想的特点
- 【了解】能够阐述类与对象的关系
- 【理解】能够根据面向对象的代码画出内存图解
- 【理解】能够阐述成员变量和局部变量的区别
- 【应用】面向对象特性之封装
- 【应用】能够独立使用private关键字
- 【理解】能够阐述封装的优点
- 【应用】能够独立使用this关键字
- 【应用】面向对象之构造方法
- 【应用】能够在类中定义构造方法
- 【应用】能够定义多个构造方法使其构成重载关系
- 【应用】能够定义一个完整的类(构造方法,getter/setter方法)
- 【应用】类名作为形参和返回值
- 【应用】能够独立定义并且调用一个形参为类名的方法
- 【应用】能够独立定义并且调用一个返回值为类名的方法
收获:
一:内存图解
一句话就是:从方法区开始,在栈里面建立空间,在堆里面分配空间,函数结束,栈释放空间
二:private---不让外界的对象直接访问成员变量
package com.itheima_06;
public class Student {
private String name;
private int age;
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
}
package com.itheima_06;
public class StudentDemo {
public static void main(String[] args) {
//创建对象
Student s = new Student();
System.out.println(s.getName()+"---"+s.getAge());
s.setName("林青霞");
s.setAge(28);
System.out.println(s.getName()+"---"+s.getAge());
}
}
三:this---适用于局部变量和成员变量重名
package com.itheima_07;
public class Student {
private String name;
private int age;
public void setName(String name) { //"林青霞"
//name = name;
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
//age = age;
this.age = age;
}
public int getAge() {
return age;
}
}
package com.itheima_07;
public class StudentDemo {
public static void main(String[] args) {
Student s = new Student();
System.out.println(s.getName()+"---"+s.getAge());
s.setName("林青霞");
s.setAge(28);
System.out.println(s.getName()+"---"+s.getAge());
}
}
四:定义多个构造方法使其构成重载关系(类与方法重名时)
package com.itheima_08;
public class Student {
private String name;
private int age;
/*
public Student() {
System.out.println("这是构造方法");
}
*/
public Student() {}
public Student(String name) {
this.name = name;
}
public Student(int age) {
this.age = age;
}
public Student(String name,int age) {
this.name = name;
this.age = age;
}
public void show() {
System.out.println(name+"---"+age);
}
}
package com.itheima_08;
public class StudentDemo {
public static void main(String[] args) {
//如何调用构造方法呢?
//通过new关键字调用
//格式:类名 对象名 = new 构造方法(...);
Student s = new Student();
s.show();
//public Student(String name)
Student s2 = new Student("林青霞");
s2.show();
//public Student(int age)
Student s3 = new Student(28);
s3.show();
//public Student(String name,int age)
Student s4 = new Student("林青霞",28);
s4.show();
}
}
五:定义一个完整的类(构造方法,getter/setter方法)
package com.itheima_09;
public class Student {
//成员变量
private String name;
private int age;
//构造方法
public Student() {}
public Student(String name,int age) {
this.name = name;
this.age = age;
}
//成员方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
package com.itheima_09;
public class StudentDemo {
public static void main(String[] args) {
//无参+setXxx()
Student s = new Student();
s.setName("林青霞");
s.setAge(28);
System.out.println(s.getName()+"---"+s.getAge());
//带参构造
Student s2 = new Student("林青霞",28);
System.out.println(s2.getName()+"---"+s2.getAge());
}
}