Knowledge points
/**
目标:知识回顾。
面向对象:
用代码去高度模拟现实世界,以便为人类的业务服务。
Java是一种面向对象的高级编程语言。
高级编程语言:代码风格很像人类的自然语言。
zhubajie.eat("西瓜");
面向对象最重要的两个概念:类和对象。
类:是描述相同事物的共同特征的抽象。 人类。
对象:是具体存在的实例,是真实的。 实例==对象。
在代码层面:必须先有类,才能创建出对象。
定义类的格式:
修饰符 class 类名{
// 1.成员变量(Field:描述类和对象的属性信息的).
// 2.成员方法(Method:描述类或者对象的行为信息的)
// 3.构造器(Constructor:初始化一个类的对象并返回引用)
// 4.代码块
// 5.内部类
}
注意:
-- 类名的首字母应该大写,满足“驼峰写法”。
-- 一个Java代码文件中可以定义多个类。但是只能有一个类
是用public修饰的,而且public修饰的类名必须成为代码的文件名称。
类中的成分研究:
类中有且仅有五大成分(五大金刚)
1.成员变量(Field:描述类和对象的属性信息的).
2.成员方法(Method:描述类或者对象的行为信息的)
3.构造器(Constructor:初始化一个类的对象并返回引用)
4.代码块
5.内部类
注意:只要不是这5大成分放在类下就会报错.
构造器的复习:
作用:初始化一个类的对象并返回引用。
格式:
修饰符 类名(形参){
}
构造器初始化对象的格式:
类名 对象名称 = new 构造器;
注意:一个类默认会自带一个无参数构造器,即使不写它也存在,但是如果一个类
它写了一个构造器,那么默认的无参数构造器就被覆盖了!!
小结:
类的5大成分
构造器的作用。
*/
public class ClassDemo01 {
// System.out.println("helloWorld");
public static void main(String[] args) {
Student s1 = new Student();
}
}
class Student{
}
Encapsulation
/**
目标:封装的复习回顾。
面向对象的三大特征:封装,继承,多态。
封装的哲学思维:合理隐藏,合理暴露。
封装最初的目的:提高代码的安全性和复用性,组件化。
封装的步骤:
1.成员变量应该私有。用private修饰,只能在本类中直接访问。
2.提供成套的getter和setter方法暴露成员变量的取值和赋值。
封装实际上已经成为了Java的代码规范,即使代码毫无意义我们还是要这样写。
*/
public class ClassDemo02 {
public static void main(String[] args) {
Person p = new Person();
p.setAge(10);
System.out.println(p.getAge());
}
}
class Person{
private int age ;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
The concept of encapsulation
/**
目标:封装的概念回顾。
面向对象的三大特征:封装,继承,多态。
是Java语言的风格。是我们在开发中必须遵循的,即使毫无意义,代码还是要按照这个风格写!!
封装的作用:
1.可以提高安全性。
2.可以实现代码的组件化。
封装的规范:
1.建议成员变量都私有:用private修饰。
private修饰的方法,成员变量,构造器等只能在本类被直接访问。
2.提供成套的getter+setter方法暴露成员变量的取值和赋值。
public修饰符,是公开的意义。
小结:
封装的核心思想:合理隐藏,合理暴露。
封装已经成为Java代码的风格,即使代码毫无意义,还是要按照封装的规范写代码。
成员变量私有,提供getter+setter方法。
*/
public class Package03 {
private String name;
private int age ;
public Package03() {
}
public Package03(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
}
this keyword
/**
目标:this关键字知识回顾。
this关键字的作用:
this代表了当前对象的引用。
this关键字可以用在实例方法和构造器中。
this用在方法中,谁调用这个方法,this就代表谁。
this用在构造器,代表了构造器正在初始化的那个对象的引用。
*/
public class ThisDemo02 {
public static void main(String[] args) {
Animal a1 = new Animal();
a1.setName("金毛");
System.out.println(a1.getName());
Animal a2 = new Animal("泰迪",3,'公');
System.out.println(a2.getName());
}
}
class Animal{
private String name;
private int age ;
private char sex ;
public Animal() {
}
public Animal(String name, int age, char sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
/**
* 获取
* @return name
*/
public String getName() {
return this.name; // a1.name this有时候可以省略不写!!
}
/**
* 设置
* @param name
* a1.setName("金毛");
*/
public void setName(String name) {
// 谁调用这个方法,this就代表谁!!!
this.name = name; // a1.name = 金毛
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
/**
* 获取
* @return sex
*/
public char getSex() {
return sex;
}
/**
* 设置
* @param sex
*/
public void setSex(char sex) {
this.sex = sex;
}
}
Use of this keyword
/**
目标:this关键字的使用总结。
this关键字代表了当前对象的引用。
this可以出现在方法,构造器中。
this出现在方法中:哪个对象调用这个方法this就代表谁。
this可以出现在构造器中:代表构造器正在初始化的那个对象。
this可以区分变量是访问的成员变量还是局部变量。
*/
public class ThisDemo03 {
public static void main(String[] args) {
Pig pig = new Pig();
pig.setName("佩奇");
pig.setAge(1);
System.out.println(pig.getName());
System.out.println(pig.getAge());
Pig qiaoZhi = new Pig("乔治",2);
System.out.println(qiaoZhi.getName());
System.out.println(qiaoZhi.getAge());
}
}
class Pig{
private String name ;
private int age ;
public Pig(){
}
public Pig(String name, int age) {
// this在构造器代表构造器正在初始化的那个对象。
this.name = name; // qiaoZhi.name = 乔治
this.age = age; // qiaoZhi.age = 2
}
public String getName() {
return name;
}
public void setName(String name) {
// 哪个对象调用方法,this就代表谁。
this.name = name; // pig.name = 佩奇
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}